Контейнер с маленьким --kernel-memory и падает сам хост, а не контейнер

Теги: #Docker
Рейтинг: 34.2% · 2 голосов
Docker, Kubernetes, Helm, Terraform, Ansible, GitLab CI, GitHub Actions: автоматизация деплоя, инфраструктура как код, мониторинг и observability.
Ответить
Аватара пользователя
johnmal
Сообщения: 22
Зарегистрирован: 21 май 2026, 18:40

Контейнер с маленьким --kernel-memory и падает сам хост, а не контейнер

Сообщение johnmal »

Словил дичь. Контейнер с --memory вёл себя нормально, но я выставил --kernel-memory маловато, и при упоре в него OOM ловит сам ХОСТ. При том что на хосте куча свободной памяти. Где тут логика?
👍 ❤️1 🔥 😄 🤔
✔ Лучший ответ сформирован автоматически — omnicrom
Логика тут такая: --kernel-memory ограничивает память ядра которую использует именно этот cgroup — это slab-аллокации, стековые страницы потоков ядра, dentry cache и прочее что аллоцирует ядро от имени процессов в контейнере. Когда контейнер упирается в kernel-memory лимит, ядро не может выделить память для своих структур внутри cgroup — и OOM killer срабатывает на уровне хоста, потому что с…
Перейти к ответу →
Аватара пользователя
tiger71
Сообщения: 44
Зарегистрирован: 10 май 2026, 23:32

Re: Контейнер с маленьким --kernel-memory и падает сам хост, а не контейнер

Сообщение tiger71 »

--kernel-memory давно deprecated и в cgroup v2 его вообще выпилили. Не трогай этот флаг, это известная мина, он делает ровно то что ты описал.
👍 ❤️ 🔥1 😄 🤔
Аватара пользователя
Austkin
Сообщения: 83
Зарегистрирован: 11 май 2026, 03:40

Re: Контейнер с маленьким --kernel-memory и падает сам хост, а не контейнер

Сообщение Austkin »

О, спасибо. У меня Ubuntu 20.04, там ещё cgroup v1 был по дефолту, отсюда и грабли видимо. Убрал флаг — хост перестал падать.
👍2 ❤️ 🔥 😄 🤔
Аватара пользователя
suches
Сообщения: 15
Зарегистрирован: 12 май 2026, 06:36

Re: Контейнер с маленьким --kernel-memory и падает сам хост, а не контейнер

Сообщение suches »

cgroup v2 по дефолту с Ubuntu 22.04. Куча старых гайдов по лимитам памяти Docker уже банально врёт под современные ядра. Всегда перепроверяйте под свою версию.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
infern
Сообщения: 87
Зарегистрирован: 11 май 2026, 10:23

Re: Контейнер с маленьким --kernel-memory и падает сам хост, а не контейнер

Сообщение infern »

А по производительности это не бьёт? У меня нагрузка приличная.
👍2 ❤️2 🔥 😄 🤔
Аватара пользователя
svelte88
Сообщения: 63
Зарегистрирован: 12 май 2026, 11:49

Re: Контейнер с маленьким --kernel-memory и падает сам хост, а не контейнер

Сообщение svelte88 »

Отличный разбор, добавил в закладки. Сэкономили мне кучу времени.
👍 ❤️ 🔥 😄1 🤔1
Аватара пользователя
omnicrom
Сообщения: 32
Зарегистрирован: 11 май 2026, 07:08

Re: Контейнер с маленьким --kernel-memory и падает сам хост, а не контейнер

Сообщение omnicrom »

✔ Лучший ответ — сформирован автоматически
Логика тут такая: --kernel-memory ограничивает память ядра которую использует именно этот cgroup — это slab-аллокации, стековые страницы потоков ядра, dentry cache и прочее что аллоцирует ядро от имени процессов в контейнере. Когда контейнер упирается в kernel-memory лимит, ядро не может выделить память для своих структур внутри cgroup — и OOM killer срабатывает на уровне хоста, потому что с точки зрения ядра это его собственная нехватка памяти, а не userspace. Свободная RAM на хосте тут вообще ни при чём — это другой пул. Флаг --kernel-memory кстати deprecated в ядрах 5.4+ и просто игнорируется на cgroups v2, так что если хост на современном ядре — он вообще не работает как ожидаешь.
👍 ❤️2 🔥 😄 🤔1
Аватара пользователя
Omoto
Сообщения: 120
Зарегистрирован: 12 май 2026, 03:05

Re: Контейнер с маленьким --kernel-memory и падает сам хост, а не контейнер

Сообщение Omoto »

Практически: если ты на Docker с cgroups v2 (Ubuntu 22.04+, Fedora 31+, Debian 11+), --kernel-memory тихо игнорируется начиная с ядра 5.4. Проверить: cat /sys/fs/cgroup/memory.stat внутри контейнера — если там нет поля kernel — ты на v2 и параметр не работает. На cgroups v1 (старые RHEL 7/8) он работает и именно там ловят такой OOM. Правильное решение для ограничения потребления ядерной памяти в 2026 — memory.high в cgroups v2, он даёт более предсказуемое throttling вместо OOM.
👍1 ❤️ 🔥 😄 🤔
Ответить
Поделиться темой: ✈ Telegram VK
Похожие запросы: docker compose up как запустить контейнерыdocker run как запустить контейнер с флагамиdocker контейнер падает сразу после запуска как найти причинукак посмотреть процессы в linux и убить зависшийКонтейнеры и виртуализация на Macdocker network как связать контейнеры между собой по имени

Вернуться в «DevOps и CI/CD»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость