Коли у Linux не вистачає пам'яті (OOM), вбивця OOM вибирає процес вбивства на основі деяких евристик (цікаве прочитання: http://lwn.net/Articles/317814/ ).
Як можна програмно визначити, які процеси нещодавно були вбиті вбивцею ООМ?
Коли у Linux не вистачає пам'яті (OOM), вбивця OOM вибирає процес вбивства на основі деяких евристик (цікаве прочитання: http://lwn.net/Articles/317814/ ).
Як можна програмно визначити, які процеси нещодавно були вбиті вбивцею ООМ?
Відповіді:
Спробуйте це:
grep -i 'killed process' /var/log/messages
/var/log/syslogдеяких дистрибутивах, а /var/log/messagesв інших -. Я думаю, що це Debian для першого та Red Hat для другого, BICBW.
egrepтут немає сенсу. Звичайне старе grep, або якщо ми конкретні fgrep, має набагато більше сенсу. (Відповідно
Спробуйте це, щоб вам не потрібно турбуватися про те, де ваші журнали
dmesg | egrep -i 'killed process'
/var/log/messages, які не відображаються в dmesg/ /var/log/dmesg. Це може бути якась неправильна конфігурація, але варто зазначити, що використання обох підходів може бути хорошою ідеєю.
dmesg -Tдля отримання читаних часових позначок
Тепер dstat надає можливість дізнатися у вашій запущеній системі, який процес може бути вбитий механізмом oom
dstat --top-oom
--out-of-memory---
kill score
java 77
java 77
java 77
і відповідно до сторінки чоловіка
--top-oom
show process that will be killed by OOM the first