У меня есть небольшой виртуальный частный сервер под управлением 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, он не может его получить
Не эксперт. просто занимаюсь этим сам и то, что я нашел