SystemdDoctor
MemoryMax= [Service]

MemoryMax= и MemoryHigh= в systemd

MemoryMax= задаёт жёсткий предел памяти: при его превышении процесс убивает ядро. MemoryHigh= — мягкий: при превышении процесс замедляется, но не убивается.

Что делает

Разница в поведении критична. Жёсткий предел — это гарантия, что служба не съест память машины, но цена — внезапная смерть процесса. Мягкий предел заставляет ядро активнее вытеснять страницы: служба работает медленнее, но живёт. Часто их задают парой: мягкий чуть ниже жёсткого.

Значения принимают суффиксы (M, G) и проценты от общей памяти машины. Проценты удобны для одинаковых unit-файлов на машинах разного размера.

Где ставится. В секции [Service]. Те же параметры доступны у срезов.

Значения

ЗначениеЧто происходит
MemoryMax=2Gжёсткий предел: при превышении ядро убивает процесс.
MemoryHigh=1800Mмягкий предел: замедление вместо смерти.
MemoryMax=50%половина памяти машины.
MemorySwapMax=0запретить службе использовать подкачку.

Пример

Пара пределов: сначала замедление, потом жёсткая граница.

[Service]
MemoryHigh=1800M
MemoryMax=2G
MemoryAccounting=yes

Учёт памяти включается автоматически при задании пределов, но явная строка делает unit-файл понятнее.

Типичные ошибки

При достижении жёсткого предела процесс убивают: состояние результата будет oom-kill, а данные могут потеряться.

Предел ниже реальной потребности превращает службу в бесконечный цикл падений и перезапусков.

Для JVM и подобных предел должен быть выше размера кучи с запасом: иначе процесс убьют сразу после старта.

Проценты считаются от памяти машины, а не от памяти среза.

Связанные ошибки

  • 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, администратор.

Рядом стоящие параметры

Где важен на практике

Источники

  • systemd.resource-control(5) официальная документация
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04) собственная проверка
    сверено 15 сентября 2026