Compruebe si el sistema elimina el programa en Linux, cómo comprobar el registro

Recientemente, en el desarrollo diario de Linux, para mantener los programas lanzados anteriormente, solo uno de los varios servidores se reinicia, y no es regular, y no hay señal y la razón por la cual el servicio se cuelga al verificar el servicio. log.No tengo más remedio que sospechar que el sistema linux dio El servicio está muerto. Entonces, quiero verificar el registro del servicio que se está eliminando y mirar el registro del sistema para juzgar.

Es decir, el archivo de mensajes en el directorio en el camino, puede filtrar la información a través de comandos para verificar si el sistema lo elimina.

 ¡Compruebe la información de registro del sistema con el siguiente comando!

egrep -i 'killed process' /var/log/messages

La salida del comando es la siguiente:

 Análisis de parámetros:

total-vm: memoria virtual total La memoria virtual total utilizada por el proceso.
rss: tamaño del conjunto residente Tamaño del conjunto residente. El conjunto residente es la colección de páginas que un proceso ha cargado en la memoria.
anon-rss: rss anónimo Conjunto residente anónimo. Por ejemplo, malloc es anónimo.
file-rss: páginas de memoria asignadas a dispositivos y archivos.
shmem-rss: ¿Probablemente rss de memoria compartida?

¡De la salida anterior, se puede ver que fue eliminado por el sistema! También se puede hacer coincidir la hora, y se eliminó a las 9: 52. Hasta ahora, se ha descubierto el problema, ¡causado por una memoria de servidor insuficiente! ! ! Prepárese para modificar el peso del servicio de este servidor y asigne la menor cantidad de tareas posible para reducir la presión sobre este servidor.

El kernel de Linux tiene un mecanismo llamado OOM killer (Out Of Memory killer), que monitorea aquellos procesos que ocupan demasiada memoria, especialmente aquellos procesos que ocupan memoria muy rápidamente, y luego elimina automáticamente el proceso para evitar el agotamiento de la memoria. El kernel detecta que la memoria del sistema es insuficiente, selecciona y elimina un proceso, puede consultar el código fuente del kernel linux/mm/oom_kill.c, cuando la memoria del sistema es insuficiente, se activa out_of_memory() y luego llama a select_bad_process( ) para seleccionar un proceso "malo". ¿Cómo juzgar y seleccionar un proceso "malo"? Linux selecciona un proceso "malo" llamando a oom_badness(). El algoritmo de selección y la idea son muy simples y sencillos: el proceso más malo es el que ocupa más memoria.

concepto basico

El kernel de Linux tiene un mecanismo llamado OOM killer (Out-Of-Memory killer).Este mecanismo monitoreará aquellos procesos que ocupan demasiada memoria, especialmente aquellos procesos que consumen mucha memoria en un instante. al agotarse, el núcleo matará el proceso.

Análisis del mecanismo asesino de Oom

¿Oom killer calcula qué proceso elegir para matar? Echemos un vistazo a algunos parámetros proporcionados por el kernel al modo de usuario en /proc: /proc/[pid]/oom_adj, el peso del proceso pid eliminado por el oom killer, entre [-17,15], cuanto más A alto peso significa que es más probable que sea seleccionado por el oom killer, y -17 significa que está prohibido matarlo. /proc/[pid]/oom_score, el puntaje de eliminación actual del proceso pid. Cuanto más alto sea el puntaje, más probabilidades hay de que lo eliminen. Este valor se calcula de acuerdo con oom_adj y es la referencia principal de oom_killer.

Hay 2 opciones configurables bajo sysctl:

  • vm.panic_on_oom = 0 #Si el kernel entra en pánico directamente cuando la memoria no es suficiente
  • vm.oom_kill_allocating_task = 1 #oom-killer si se debe seleccionar el proceso que actualmente solicita memoria para eliminar
  • Si desea modificar la probabilidad de ser seleccionado por oom killer, prohibir o darle a oom_adj el valor más pequeño o más pequeño, también puede ajustar el comportamiento de oom killer a través de sysctl

¿Puede proteger procesos importantes para que no sean eliminados por OOM Killer? ¡Realmente puedo!

OOM Killer comprobará el archivo /proc/$pid/oom_score_adj para ajustar la puntuación final (oom_score). Por lo tanto, podemos reducir la posibilidad de que el proceso se seleccione y finalice dando un gran número negativo en este archivo. oom_score_adj puede variar de -1000 a 1000. Si asigna -1000, OOM Killer no eliminará el proceso, incluso si utiliza el 100% de la memoria. Puede modificar oom_score_adj (por ejemplo, establecerlo en -200) con el siguiente comando:

Supongo que te gusta

Origin blog.csdn.net/Lemon_D1999/article/details/129357994
Recomendado
Clasificación