fix(stand): снят несуществующий бюджет памяти, нодам ClickHouse — 4 ГиБ #25
+1
-4
@@ -15,10 +15,7 @@ x-clickhouse-common: &clickhouse-common
|
|||||||
clickhouse-keeper:
|
clickhouse-keeper:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
ulimits: *clickhouse-nofile
|
ulimits: *clickhouse-nofile
|
||||||
# Не гигабайт: около 550 МиБ от RSS праздной ноды — страницы её собственного
|
# Гигабайта не хватало: половину съедали страницы самого бинарника (ADR 0004).
|
||||||
# бинарника, и рабочего места почти не оставалось. Лимит не бронь: в покое
|
|
||||||
# нода занимает столько же, а коробка задаёт, где сервер включает
|
|
||||||
# предохранители — свои кэши и сброс на диск (ADR 0004).
|
|
||||||
mem_limit: 4g
|
mem_limit: 4g
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD-SHELL", "clickhouse-client --host 127.0.0.1 --query 'SELECT 1' >/dev/null 2>&1"]
|
test: ["CMD-SHELL", "clickhouse-client --host 127.0.0.1 --query 'SELECT 1' >/dev/null 2>&1"]
|
||||||
|
|||||||
+3
-11
@@ -590,15 +590,8 @@ check_superset() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Контейнер, убитый ядром за нехватку памяти, Docker поднимает сам, и через
|
# Убитый за память контейнер Docker поднимает сам, и проверка здоровья об этом
|
||||||
# полминуты его проверка состояния снова зелёная: о смерти она не расскажет.
|
# промолчит. Порога здесь нет: это «да или нет», а не бюджет памяти (ADR 0004).
|
||||||
# Поэтому спрашиваем у Docker два факта — убивало ли ядро что-нибудь в контейнере
|
|
||||||
# за память и включалась ли политика перезапуска. Ручной `docker compose restart`
|
|
||||||
# счётчик не трогает, так что документированный перезапуск нод проверку не
|
|
||||||
# роняет. Порога здесь нет: это «да или нет», а не бюджет памяти (ADR 0004).
|
|
||||||
#
|
|
||||||
# Два факта берутся одним `--format` и разбираются образцом — тем же приёмом,
|
|
||||||
# что и состояние с проверкой здоровья выше.
|
|
||||||
check_containers_survived() {
|
check_containers_survived() {
|
||||||
local container_id
|
local container_id
|
||||||
local service
|
local service
|
||||||
@@ -614,8 +607,7 @@ check_containers_survived() {
|
|||||||
state="$(docker inspect --format '{{.State.OOMKilled}}/{{.RestartCount}}' "$container_id" 2>/dev/null || true)"
|
state="$(docker inspect --format '{{.State.OOMKilled}}/{{.RestartCount}}' "$container_id" 2>/dev/null || true)"
|
||||||
case "$state" in
|
case "$state" in
|
||||||
false/0) ;;
|
false/0) ;;
|
||||||
# OOMKilled поднимается и когда ядро убило процесс внутри живого
|
# OOMKilled встаёт и когда убит процесс внутри живого контейнера.
|
||||||
# контейнера, поэтому говорим про процесс, а не про контейнер.
|
|
||||||
true/*)
|
true/*)
|
||||||
fail "в контейнере ${service} ядро убило процесс из-за нехватки памяти"
|
fail "в контейнере ${service} ядро убило процесс из-за нехватки памяти"
|
||||||
problems=$((problems + 1))
|
problems=$((problems + 1))
|
||||||
|
|||||||
Reference in New Issue
Block a user