¿Qué necesito?

  • Un servidor Linux dedicado o VPS
  • CentOS
  • masilla

¿Por qué mueren los procesos?

Algunos comportamientos inesperados en el servidor web a veces pueden deberse a limitaciones de recursos del sistema. Los procesos hacen esto a menudo y, a veces, de manera bastante excesiva. Por su propia naturaleza, Linux está diseñado para utilizar todo el almacenamiento físico disponible de la manera más eficiente posible. En la práctica, sin embargo, el kernel de Linux sigue una regla básica de que una página de RAM libre está desperdiciando RAM. El sistema contiene mucha más RAM que solo datos de aplicación. especialmente los datos reflejados de las unidades de almacenamiento para un acceso más rápido.

  1. El proceso se detuvo inesperadamente
  1. Las tareas que se eliminan repentinamente a menudo son el resultado de una falla del sistema cuando la llamada memoria OOM (OOM) anuncia su presencia. Al igual que la pantalla azul de la muerte o “BSoD” del mismo nombre que plagó las primeras versiones de Windows.
  2. Puede buscar en los registros mensajes con advertencias de poca memoria:
sudo grep -i -r ‘out of memory’ /var/log/

  1. Grep busca todos los registros en el directorio y muestra todos los comandos que se están ejecutando actualmente /var/log/auth.log. Los indicadores reales de un proceso finalizado de OOM se verían así:

Cómo comprobar por qué un proceso se detuvo inesperadamente en Linux

  1. El registro proporcionado aquí muestra que el proceso abortado era mysqld con PID 9163 y un valor OOM de 511 en el momento del aborto. Los mensajes y su contenido varían según la distribución de Linux que esté utilizando. Por ejemplo, si un proceso crítico para su aplicación web ha sido cancelado debido a una situación OOM, tiene algunas opciones: reducir la cantidad de memoria que solicita el proceso, prohibir que los procesos abusen de la memoria o simplemente agregar más memoria a su servidor. configuración.
  1. Uso actual de recursos
  1. Linux ofrece una serie de excelentes herramientas para rastrear procesos que se pueden utilizar para identificar posibles escaseces de recursos:
free -h

Cómo comprobar por qué un proceso se detuvo inesperadamente en Linux

  1. Aquí es importante distinguir entre la memoria utilizada por la aplicación, los búferes y los cachés. En la línea ‘Mem’ de la salida, parece que se está utilizando casi el 75% de nuestra RAM, pero por otro lado, más de la mitad de la memoria utilizada está siendo utilizada por datos almacenados en caché.
  2. La diferencia es que mientras que las aplicaciones reservan memoria para su propio uso, la caché a menudo usa datos de disco que el kernel almacena temporalmente en la memoria para un acceso más rápido, lo que se considera memoria libre a nivel de la aplicación.
  3. Teniendo esto en cuenta, es más fácil entender por qué la memoria usada y la libre se enumeran dos veces. La segunda línea muestra el uso real de la memoria, teniendo en cuenta la cantidad de memoria utilizada por los búferes y la memoria caché.
  4. En este ejemplo, el sistema solo utiliza 234 MB del total de 993 MB disponibles y no existe un riesgo inminente de interrumpir un proceso para ahorrar recursos.
  5. Otra herramienta útil para el control de la memoria es “top”, que muestra información útil y constantemente actualizada sobre el uso de la memoria y la CPU, el tiempo de ejecución y otras estadísticas de los procesos. Esto es especialmente útil para identificar tareas que consumen muchos recursos:
top

Cómo comprobar por qué un proceso se detuvo inesperadamente en Linux

  1. Arriba se muestra un sistema que apunta nominalmente al perfil.
  1. Compruebe si sus procesos están en riesgo
  1. Si la memoria de su servidor se usa en la medida en que puede poner en peligro la estabilidad del sistema, el asesino de memoria usa muchas variables para elegir qué proceso debe eliminarse, p. Ej. B. la cantidad de trabajo que se perdería y se liberaría toda la memoria. Linux mantiene una puntuación para cada proceso en ejecución que representa la probabilidad de que el proceso se anule en una situación OOM.
  2. Esta partitura se guarda en el archivo / proc / / oom_score. PID es el número de identificación del proceso que está investigando. El PID se puede encontrar fácilmente con el siguiente comando:
ps aux ¦ grep <process name>

  1. El comando al buscar MySQL es similar al siguiente:

Cómo comprobar por qué un proceso se detuvo inesperadamente en Linux

Próximos pasos

Después de completar los pasos anteriores, siempre es una buena idea desactivar la función de over-commit que es común a la mayoría de las distribuciones de Linux. De forma predeterminada, el kernel permite que los procesos soliciten más memoria de la que está disponible actualmente en el sistema para mejorar el uso de la memoria. Esto se basa en la heurística de que los procesos en realidad nunca usan toda la memoria que solicitaron. Sin embargo, si su sistema corre el riesgo de quedarse sin memoria y desea evitar que se pierdan las tareas del asesino OOM, puede desactivar la sobreasignación de memoria. Y no olvidemos que si se queda sin memoria, siempre puede considerar actualizar el hardware de su servidor web.

Conclusión

El consumo excesivo de los recursos asignados por el sistema puede ser un indicador de varios factores, incluido un ataque real por parte de malos actores. Sea consciente, tome precauciones y manténgase a salvo.