From 87785672668caa2b147b6017ac805298a454bfb5 Mon Sep 17 00:00:00 2001 From: Dmitry Dementiev Date: Sat, 1 Aug 2026 15:26:22 +0300 Subject: [PATCH] =?UTF-8?q?style(stand):=20=D0=BA=D0=BE=D0=BC=D0=BC=D0=B5?= =?UTF-8?q?=D0=BD=D1=82=D0=B0=D1=80=D0=B8=D0=B8=20=D1=83=D0=B6=D0=B0=D1=82?= =?UTF-8?q?=D1=8B=20=D0=B4=D0=BE=20=D1=82=D0=BE=D0=B3=D0=BE,=20=D1=87?= =?UTF-8?q?=D0=B5=D0=B3=D0=BE=20=D0=BD=D0=B5=D1=82=20=D0=B2=20=D0=BA=D0=BE?= =?UTF-8?q?=D0=B4=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Зачем Комментарии к правке были размером с объяснение, хотя объяснение уже лежит в ADR 0004. В compose.yaml четыре строки на одну настройку; в stand-smoke.sh одиннадцать новых строк там, где на весь файл до этого было две — шебанг и одна строка про разбор подстановок. Заодно в комментариях остались метафоры («бронь», «предохранители»), вычищенные из ADR прошлым коммитом. Что - compose.yaml: одна строка вместо четырёх — почему не гигабайт и куда идти за подробностями. - stand-smoke.sh: две строки вместо шести — зачем проверка вообще нужна. Комментарий про разбор `--format` убран целиком: он оправдывался перед читателем, а не помогал ему. - Комментарий про OOMKilled оставлен, но в одну строку: без него сообщение «убило процесс, а не контейнер» выглядит опиской. Проверка make config-test — зелено. Co-Authored-By: Claude Opus 5 --- compose.yaml | 5 +---- scripts/stand-smoke.sh | 14 +++----------- 2 files changed, 4 insertions(+), 15 deletions(-) diff --git a/compose.yaml b/compose.yaml index 20fa0cb..40f638d 100644 --- a/compose.yaml +++ b/compose.yaml @@ -15,10 +15,7 @@ x-clickhouse-common: &clickhouse-common clickhouse-keeper: condition: service_healthy ulimits: *clickhouse-nofile - # Не гигабайт: около 550 МиБ от RSS праздной ноды — страницы её собственного - # бинарника, и рабочего места почти не оставалось. Лимит не бронь: в покое - # нода занимает столько же, а коробка задаёт, где сервер включает - # предохранители — свои кэши и сброс на диск (ADR 0004). + # Гигабайта не хватало: половину съедали страницы самого бинарника (ADR 0004). mem_limit: 4g healthcheck: test: ["CMD-SHELL", "clickhouse-client --host 127.0.0.1 --query 'SELECT 1' >/dev/null 2>&1"] diff --git a/scripts/stand-smoke.sh b/scripts/stand-smoke.sh index 2e14ef1..3d13b16 100755 --- a/scripts/stand-smoke.sh +++ b/scripts/stand-smoke.sh @@ -590,15 +590,8 @@ check_superset() { fi } -# Контейнер, убитый ядром за нехватку памяти, Docker поднимает сам, и через -# полминуты его проверка состояния снова зелёная: о смерти она не расскажет. -# Поэтому спрашиваем у Docker два факта — убивало ли ядро что-нибудь в контейнере -# за память и включалась ли политика перезапуска. Ручной `docker compose restart` -# счётчик не трогает, так что документированный перезапуск нод проверку не -# роняет. Порога здесь нет: это «да или нет», а не бюджет памяти (ADR 0004). -# -# Два факта берутся одним `--format` и разбираются образцом — тем же приёмом, -# что и состояние с проверкой здоровья выше. +# Убитый за память контейнер Docker поднимает сам, и проверка здоровья об этом +# промолчит. Порога здесь нет: это «да или нет», а не бюджет памяти (ADR 0004). check_containers_survived() { local container_id local service @@ -614,8 +607,7 @@ check_containers_survived() { state="$(docker inspect --format '{{.State.OOMKilled}}/{{.RestartCount}}' "$container_id" 2>/dev/null || true)" case "$state" in false/0) ;; - # OOMKilled поднимается и когда ядро убило процесс внутри живого - # контейнера, поэтому говорим про процесс, а не про контейнер. + # OOMKilled встаёт и когда убит процесс внутри живого контейнера. true/*) fail "в контейнере ${service} ядро убило процесс из-за нехватки памяти" problems=$((problems + 1))