Назад | Перейти на главную страницу

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

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

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

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

Нет, алгоритм не такой уж и упрощенный. Вы можете найти дополнительную информацию в:

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 для их автоматического перезапуска в такой ситуации. Это может спасти от потери доступа к машине, если у вас нет удаленной консоли.

Удачи,
Жуан Мигель Невеш

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

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

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

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

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

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

Не эксперт. просто занимаюсь этим сам и то, что я нашел