OOM killer
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 спиране
- Потърси в журнала на ядрото:
journalctl -k | grep -i -A5 'out of memory' - Забележи спрения процес и размера на паметта му.
- Провери текущата памет и суап:
free -h - Намери най-големите процеси:
ps aux --sort=-rss | head - Добави суап или ограничи услугата, след което следи дали това ще се повтори.
Внимание
- Задаването на oom_score_adj на -1000 за много процеси може да остави ядрото без безопасен избор.
- Изключването на защитата срещу свръхразпределение (overcommit) на паметта без разбиране може да причини грешки другаде.
Свързани статии
- Swap пространството в LinuxКакво е swap, как да го видиш с free и swapon, как да добавиш swap файл и какво променя vm.swappiness.
- Средно натоварванеКакво означават трите числа за средно натоварване, как се свързват с процесорните ядра и кога високото натоварване е проблем.
- journalctl и системният журнал systemdКак да четеш логове с journalctl, да проверяваш колко място заема журналът и да го свиваш безопасно с опциите --vacuum.
Източници
- Страница с ръководство за proc(5): oom_score и oom_score_adj man7.org
- Управление на недостига на памет (kernel.org) kernel.org
Бележка: RainServer предлага мониторинг и безопасно почистване за Linux сървъри; той показва какво ще се промени и пита предварително.
Последен преглед: