fix(stand): снят несуществующий бюджет памяти, нодам ClickHouse — 4 ГиБ
Зачем Стенд упирался в память ноды ClickHouse: пробник валился на CREATE TABLE ON CLUSTER, вместе с ним краснели make smoke и make smoke-guards. Причина не та, что предполагал #21: дело не в заводских кэшах, а в коробке на гигабайт. Около 550 МиБ RSS праздной ноды — страницы её собственного бинарника, и на работу оставалось около 350 МиБ, которые пробник добирал за сессию. Заодно выяснилось, откуда взялся предел 3,4 ГБ. Это была оценка расхода из спеки, посчитанная по стенду-предшественнику до первой сборки v2 и превращённая в жёсткий порог проверки. Порог стал критерием приёмки каждого этапа и дальше блокировал бы любой рост стенда на этапах 2-9. Что - ADR 0004: бюджета памяти у стенда нет, есть требование к машине — около 8 ГБ, доступных Docker. Ресурсный довод ADR 0001 отозван, сами решения в силе. - Нодам ClickHouse 4 ГиБ вместо гигабайта. Остальные лимиты не тронуты: ни один из них ни разу не сработал, а снять их скопом — то же изменение без свидетельств, каким они были выставлены. - Из make smoke убрана проверка суммарного потребления. Она мерила docker stats вместе со страничным кэшем, то есть отвечала на вопрос «сколько файлов стенд потрогал», и с появлением настоящих данных краснела бы на здоровом стенде. Вместе с ней убрана привязанная к её сообщению проверка docs-guards. - Взамен smoke спрашивает у Docker, не убивало ли ядро долгоживущий контейнер за память и не включалась ли политика перезапуска. Порога у проверки нет: убитый контейнер Docker поднимает сам, и без этого вопроса стенд отрапортует «всё хорошо» о ноде, которая умирала. - README и раздел «Ресурсный бюджет» спеки переписаны с предела на требование к машине; README объясняет менти, что такое «память, доступная Docker». Проверка make config-test; make up; make smoke — 25 из 25; make smoke-cluster — 8 из 8; make smoke-guards — 3 из 3, включая шаг «после восстановления стенд проходит make smoke», который падал 31 июля. На живом стенде с новой коробкой: max_server_memory_usage = 3,60 ГиБ, в журнале ноды «Lowered mark cache size to 2.00 GiB because the system has limited RAM». Семантика счётчиков Docker снята отдельными контейнерами: ручной restart оставляет RestartCount = 0, убийство за память даёт OOMKilled = true и растущий счётчик, убийство не за память OOMKilled не поднимает. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -338,12 +338,21 @@ CSV в репозитории (`data/catalog/products.csv`: `sku`, `name`, `cate
|
||||
|
||||
### Ресурсный бюджет (#10)
|
||||
|
||||
Расчёт на ноутбук менти с 16 ГБ памяти; у кого 8 ГБ — берёт VDS за свой счёт.
|
||||
Полный стенд в покое ≈3,4 ГБ. Топология 2×1 добавляет ≈0,6–0,8 ГБ — влезает
|
||||
свободно. Топология 2×2 добавила бы ≈1,7–1,9 ГБ и упёрлась бы в дефолтный
|
||||
бюджет WSL2 (~8 ГБ) — это второй довод против реплик, рядом с главным
|
||||
(репликационная эксплуатация — отдельный операционный домен). Координатор —
|
||||
clickhouse-keeper, а не ZooKeeper, в том числе из-за этого бюджета.
|
||||
Предела расхода у стенда нет. Есть требование к машине: около 8 ГБ памяти,
|
||||
доступной Docker. Решение и его основания —
|
||||
[ADR 0004](../adr/0004-resource-limits.md); для менти то же самое объясняет
|
||||
README.
|
||||
|
||||
Прежняя оценка «полный стенд в покое ≈3,4 ГБ» была расчётом по
|
||||
стенду-предшественнику, сделанным до первой сборки v2, и предела не задавала.
|
||||
Проверка `make smoke`, сторожившая это число, убрана: она мерила потребление
|
||||
вместе со страничным кэшем и с появлением настоящих данных начала бы краснеть
|
||||
на здоровом стенде.
|
||||
|
||||
Топология 2×2 остаётся отвергнутой по главному доводу — репликационная
|
||||
эксплуатация есть отдельный операционный домен. Второй довод, от бюджета, снят
|
||||
вместе с бюджетом. Выбор clickhouse-keeper вместо ZooKeeper держится на
|
||||
резолюции #14 и ссылки на бюджет больше не требует.
|
||||
|
||||
## 7. Слои: карта таблиц v2
|
||||
|
||||
|
||||
Reference in New Issue
Block a user