¿Cómo utiliza Linux el mecanismo asesino de OOM?

  
                

El mecanismo de OOM killer es un mecanismo para que Linux elimine procesos. Si el proceso corrompe los recursos del sistema en cierta medida, el mecanismo de OOM killer forzará el proceso a matar. Este artículo presentará cómo Linux utiliza el mecanismo asesino de OOM.

En términos simples, este mecanismo vigilará los que toman demasiada memoria, especialmente en el momento de forma rápida consumen grandes cantidades de los procesos de memoria, con el fin de evitar que fuera de la memoria y el kernel va a matar el proceso.

Esta función puede garantizar repetidamente el procesamiento de la memoria incluso si no se puede liberar la memoria, evitar que el sistema se detenga y averiguar el proceso que consume demasiada memoria.

La situación típica es: una máquina repentinamente inicia sesión de forma remota en ssh, pero puede hacer ping, lo que indica que la red no está defectuosa o que la máquina está inactiva, es probable que el asesino de OOM haya eliminado el proceso sshd.

Después de reiniciar la máquina, ver el registro del sistema /var /log /messages mostrará un mensaje de error similar a Out of Memory: Kill process 247 (sshd).

Hay otra situación que puede llevar a que el ping no pueda ssh, es decir, demasiadas conexiones de red para agotar los recursos del descriptor de archivos del sistema, esta situación no se considera aquí.

En la solución de alta disponibilidad que usa vip, esta situación también es propensa a la división del cerebro.

Evitar que se eliminen los mecanismos importantes de activación de procesos del sistema (OOM): puede configurar el parámetro /proc /PID /oom_adj en -17 para desactivar temporalmente el mecanismo OOM del kernel de Linux. El núcleo calculará un puntaje para cada proceso mediante un algoritmo específico para determinar qué proceso matar. El puntaje de oom para cada proceso se puede encontrar en /proc /PID /oom_score.

Creemos que los procesos importantes tienen sshd, o algunos demonios de monitoreo, puede elegir el proceso que desea proteger de acuerdo con su situación real.

Proteger un proceso para que no sea eliminado por el kernel se puede hacer de esta manera:

echo -17》 /​​proc /$ PID /oom_adj

Puede escribir un script simple para implementar Evite que se omitan procesos importantes en crontab

pgrep -f " /usr /sbin /sshd "

Copyright © Conocimiento de Windows All Rights Reserved