Cómo diagnosticar las causas de los procesos asesinos de Oom-Killer

9

Tengo un pequeño servidor privado virtual que ejecuta CentOS y www / mail / db, que recientemente ha tenido un par de incidentes en los que el servidor web y ssh no respondieron.

Mirando los registros, vi que Oom-Killer había matado estos procesos, posiblemente debido a la falta de memoria y el intercambio.

¿Alguien puede darme algunos consejos sobre cómo diagnosticar lo que pudo haber causado el incidente más reciente? ¿Es probable que se haya matado el primer proceso? ¿Dónde más debería estar buscando?

dunxd
fuente

Respuestas:

11

No, el algoritmo no es tan simplista. Puedes encontrar más información en:

http://linux-mm.org/OOM_Killer

Si desea realizar un seguimiento del uso de la memoria, le recomiendo ejecutar un comando como:

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

Le dará una lista de los procesos que están utilizando la mayor cantidad de memoria (y probablemente causan la situación de OOM). Elimine el | headsi prefiere verificar todos los procesos.

Si pone esto en su cron, repítalo cada 5 minutos y guárdelo en un archivo. Mantenga al menos un par de días, para que pueda verificar lo que sucedió más tarde.

Para servicios críticos como ssh, recomendaría usar monit para reiniciarlos automáticamente en tal situación. Podría evitar perder el acceso a la máquina si no tiene una consola remota.

Mucha suerte,
João Miguel Neves

jneves
fuente
Gracias, finalmente pude probar esto después de un par de incidentes más de Oom-Killer que pusieron de rodillas a mi servidor. Necesito localizar la causa.
dunxd
6

Tuve un momento difícil con eso recientemente, porque los procesos en los que el asesino pisa fuerte no son necesariamente los que han salido mal. Mientras intentaba diagnosticar eso, aprendí sobre una de mis herramientas ahora favoritas, además.

Esta utilidad es como un top en los esteroides. Durante un intervalo de tiempo preestablecido, perfila la información del sistema. Luego puede reproducirlo para ver qué está pasando. Destaca procesos que son 80% + en azul y 90% + en rojo. La vista más útil es una tabla de uso de memoria de cuánta memoria se asignó en el último período de tiempo. Ese es el que más me ayudó.

Herramienta fantástica: no puedo decir lo suficiente al respecto.

encima del monitor de rendimiento

pboin
fuente
1

OOM solo está matando el proceso que tiene más uso de memoria en ese momento. No necesariamente el proceso que superó el límite o aumentó la llamada de OOm.
Además, Linux es laxo con su asignación de memoria. AKA si su proceso necesita 5 gb pero solo está usando 3, Linux permitirá que otro proceso use el 2 que no está usando. rendimiento> fiabilidad. entonces cuando p1 necesita su 5 completo no puede obtenerlo

No es un experto. solo lidiando con esto yo mismo y lo que he encontrado

mwans
fuente