Rain WikiWindows · Linux · Android

OOM killer

ПонятиеВсички Linux дистрибуции

OOM (out-of-memory) killer е частта от ядрото на Linux, която прекратява процес, когато системата остане без памет и не може да освободи такава. Той избира процеса по неговия OOM резултат, обикновено този, който използва най-много памет. Журналът на ядрото записва всяко спиране от OOM.

1Как се избира жертвата

Всеки процес има резултат в /proc/<pid>/oom_score, който нараства с използването на паметта. /proc/<pid>/oom_score_adj, от -1000 до 1000, го коригира; -1000 означава, че процесът никога не се избира.

2Намиране на OOM спирания

Ядрото записва „Out of memory: Killed process“ в своя журнал. journalctl -k | grep -i oom или dmesg | grep -i oom показва тези съобщения, заедно с името на процеса и използването му на памет.

3Предотвратяване

Добави памет или суап, ограничи услугите, които консумират много памет, или задай ограничения за всяка услуга с опции на systemd като MemoryMax=. Някои дистрибуции стартират и systemd-oomd, който действа по-рано въз основа на натиска върху паметта.

Как да разследваш OOM спиране

  1. Потърси в журнала на ядрото: journalctl -k | grep -i -A5 'out of memory'
  2. Забележи спрения процес и размера на паметта му.
  3. Провери текущата памет и суап: free -h
  4. Намери най-големите процеси: ps aux --sort=-rss | head
  5. Добави суап или ограничи услугата, след което следи дали това ще се повтори.

Внимание

  • Задаването на oom_score_adj на -1000 за много процеси може да остави ядрото без безопасен избор.
  • Изключването на защитата срещу свръхразпределение (overcommit) на паметта без разбиране може да причини грешки другаде.

Източници

  1. Страница с ръководство за proc(5): oom_score и oom_score_adj man7.org
  2. Управление на недостига на памет (kernel.org) kernel.org

Бележка: RainServer предлага мониторинг и безопасно почистване за Linux сървъри; той показва какво ще се промени и пита предварително.

Последен преглед: