Как диагностировать причины убийственных процессов

9

У меня есть небольшой виртуальный частный сервер под управлением CentOS и www / mail / db, в котором недавно было несколько инцидентов, когда веб-сервер и ssh перестали отвечать на запросы.

Просматривая логи, я увидел, что oom-killer убил эти процессы, возможно, из-за нехватки памяти и перестановки.

Кто-нибудь может дать мне несколько советов о том, как диагностировать, что, возможно, вызвало самый последний инцидент? Вероятно ли, что первый процесс убит? Где еще я должен искать?

dunxd
источник

Ответы:

11

Нет, алгоритм не настолько прост. Вы можете найти больше информации в:

http://linux-mm.org/OOM_Killer

Если вы хотите отслеживать использование памяти, я бы порекомендовал запустить такую ​​команду:

ps -e -o pid,user,cpu,size,rss,cmd --sort -size,-rss | head

Это даст вам список процессов, которые используют больше всего памяти (и, вероятно, вызывают ситуацию OOM). Удалите, | headесли вы хотите проверить все процессы.

Если вы поместите это на свой cron, повторяйте его каждые 5 минут и сохраняйте в файл. Оставьте хотя бы пару дней, чтобы вы могли проверить, что произошло позже.

Для критически важных служб, таких как ssh, я бы рекомендовал использовать monit для автоматического перезапуска их в такой ситуации. Это может спасти от потери доступа к машине, если у вас нет удаленной консоли к ней.

Удачи,
Жоао Мигель Невес

jneves
источник
Спасибо - наконец-то удалось попробовать это после пары дальнейших инцидентов, когда oom-killer поставил мой сервер на колени. Нужно отследить причину.
Данксд
6

В последнее время у меня были трудности с этим, потому что процесс (ы), на котором работает убийца, не обязательно является ошибочным. Пытаясь диагностировать это, я узнал об одном из моих теперь любимых инструментов, поверх.

Эта утилита похожа на топ на стероидах. Через заданный промежуток времени он профилирует системную информацию. Затем вы можете воспроизвести его, чтобы посмотреть, что происходит. Он выделяет процессы, которые на 80% + синим и 90% + красным. Наиболее полезным представлением является таблица использования памяти того, сколько памяти было выделено за последний период времени. Это тот, который помог мне больше всего.

Фантастический инструмент - не могу сказать достаточно об этом.

на мониторе производительности

pboin
источник
1

Эта статья о приручении oom-killer выглядит особенно полезной. Кажется, вы можете установить приоритеты, чтобы предотвратить убийство некоторых процессов определенными процессами (sshd был бы хорошим началом для VPS!)

dunxd
источник
1

OOM только убивает процесс, который использует больше всего памяти в то время. Не обязательно процесс, который превысил предел или вызвал вызов OOm.
Также linux слабо выделяет память. Если ваш процесс требует 5 ГБ, но использует только 3, Linux позволит другому процессу использовать 2, который он не использует. производительность> надежность. тогда, когда p1 нуждается в его полных 5, он не может получить его

Не exeprt. просто имею дело с этим сам и что я нашел

mwans
источник