Коли у 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