status=206/OOM_ADJUST в systemd
Код 206/OOM_ADJUST значит, что systemd не сумел записать значение OOMScoreAdjust= для нового процесса. Понижать оценку (делать процесс менее привлекательным для OOM-killer) может только достаточно привилегированный процесс, и именно на этом шаг обычно и падает.
Вероятные причины
По порядку: сверху то, что встречается чаще.
-
Отрицательное значение при недостатке прав
Понижение оценки требует CAP_SYS_RESOURCE. У службы без этой возможности или в контейнере запись отрицательного значения запрещена ядром.
-
Значение вне диапазона
Допустимы только числа от −1000 до 1000. Всё остальное отвергается.
Диагностика
Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.
Показывает отказ на шаге OOM_ADJUST и его причину.
journalctl -xeu myapp.service --no-pager -n 20Оба параметра управления OOM рядом: бывает, что путают их назначение.
systemctl show myapp.service -p OOMScoreAdjust -p OOMPolicyРешение
Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.
- Почему происходит
- Понижение оценки требует CAP_SYS_RESOURCE. У службы без этой возможности или в контейнере запись отрицательного значения запрещена ядром.
- Как проверить
-
Посмотрите запрошенное значение и набор возможностей.
systemctl show myapp.service -p OOMScoreAdjust -p CapabilityBoundingSet -p User
- Как исправить
- Либо уберите отрицательное значение, либо оставьте службе нужную возможность. Для служб пользователя (systemctl --user) отрицательные значения недоступны в принципе.
- Почему происходит
- Допустимы только числа от −1000 до 1000. Всё остальное отвергается.
- Как проверить
-
Проверьте действующее значение.
systemctl show myapp.service -p OOMScoreAdjust
- Как исправить
- Поставьте значение в диапазоне. Осмысленные варианты: 500…900 для необязательных служб, −500 для критичных.
Пример вывода
Служба пользователя пытается понизить оценку OOM. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.
× myapp.service - My application
Active: failed (Result: exit-code) since Mon 2026-09-14 16:20:44 MSK; 1s ago
Process: 11002 ExecStart=/usr/local/bin/myapp (code=exited, status=206/OOM_ADJUST)
systemd[11002]: myapp.service: Failed at step OOM_ADJUST spawning /usr/local/bin/myapp: Permission denied
Связанные ошибки
- Failed with result 'oom-kill' Состояние oom-kill: процесс службы убит из-за нехватки памяти. Как понять, упёрлись в предел службы или в память машины.
- status=204/MEMORY в systemd Код 204/MEMORY: systemd не смог выделить память при подготовке запуска службы. Что проверять на машине и в unit-файле.
- signal=KILL (status=9/KILL) в systemd Процесс службы убит сигналом KILL. Кто мог его послать: OOM-killer, таймаут остановки systemd, администратор.
- AppArmor: apparmor="DENIED" в журнале ядра Профиль AppArmor запретил операцию: как прочитать запись, найти профиль и поправить его правильно.
- Caddy не занимает порты 80 и 443 без прав Служба падает при открытии слушателя: нет возможности занимать привилегированные порты.
- Cannot allocate memory в журнале службы Не удалось выделить память: предел службы, память машины, настройка overcommit, исчерпанные области отображения.
- Configuration file is marked world-inaccessible Предупреждение о правах на unit-файл: служба работает, но файл недоступен для чтения другим.
- Elasticsearch: служба падает из-за размера кучи JVM Размер кучи больше доступной памяти или больше предела службы: падение при старте или под нагрузкой.
Источники
-
systemd.exec(5)
206 EXIT_OOM_ADJUST: не удалось изменить настройку OOM, см. OOMScoreAdjust=. -
Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
Воспроизведено в службе пользователя с OOMScoreAdjust=-500.