mysql amazon-ec2 out-of-memory ubuntu-12.04 restart

Reinicie Mysql automáticamente cuando ubuntu en la microinstancia EC2 lo mate cuando se quede sin memoria



amazon-ec2 out-of-memory (2)

Puede verificar el estado de mysql cada minuto (con cron) y reiniciar si se cuelga:

* * * * * service mysql status | grep running || service mysql restart

Cuando el sistema se queda sin memoria, ubuntu 12.04 mata el proceso de mysql:

Out of memory: Kill process 17074 (mysqld) score 146 or sacrifice child

Entonces el proceso termina asesinado. Esto sucede en los picos de carga del servidor y principalmente debido a que apache se está volviendo loco y se está comiendo la memoria restante disponible. Posibles enfoques podrían ser:

  • Cambia de alguna manera la prioridad de mysql, por lo que no se destruye (probablemente sea una mala solución ya que se matará a otra cosa)
  • Controle el estado de mysql y reinícielo automáticamente cada vez que lo maten (el que estoy pensando, pero no sé cómo hacerlo).

¿Cómo lo ves?


La terminación abrupta de un servidor de base de datos es una falla muy grave. Debe evitar esto en un sistema de producción, ya que puede no reiniciarse limpiamente.

El servidor de la base de datos es un recurso compartido, y casi nunca debe finalizar de manera no planificada en producción. Lo único que debería causar la terminación no planificada es una falla catastrófica de hardware o energía. La mayoría de los servidores de bases de datos de producción configurados correctamente tienen una terminación no planificada una vez cada diez años o con menos frecuencia. Seriamente.

¿Qué hacer?

Repara tu configuración de apache Limite el número de subprocesos y procesos de trabajo que puede usar, para que no se ejecute de manera salvaje. Aprenda cómo hacer esto. Es vital Vea aquí: http://httpd.apache.org/docs/current/mod/mpm_common.html#maxrequestworkers

Arregle los defectos en su aplicación web que están causando que su apache se ejecute.

Si puede, mueva su servidor mysqld a una máquina servidor diferente de apache, para que los dos no compitan por los mismos recursos de hardware.

Configure su mysqld para limitar el número de conexiones que aceptará de subprocesos de trabajo de apache u otros clientes. Es probable que su aplicación web maneje la situación en la que un hilo de trabajo necesita esperar una conexión. Mira aquí. http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_max_connections

¿Estás en una microinstancia EC2? Necesitas hacer un ajuste serio. Vea aquí: http://ubuntuforums.org/showthread.php?t=1979049