Mi instancia de Linux de Amazon Elastic Compute Cloud (Amazon EC2) deja de responder debido a la sobreutilización de recursos. ¿Cómo puedo evitarlo?
Descripción corta
Hay varias causas comunes por las que una instancia deja de responder:
Memoria: las instancias EC2 no tienen espacio de intercambio asignado de forma predeterminada. La falta de memoria puede invocar el administrador Linux Out Of Memory (OOM). El administrador OOM finaliza los procesos, tales como una base de datos, un servidor web o el servicio SSH.
Conexión de red: sin conexión de red, el sistema no puede responder a las solicitudes ARP de las comprobaciones de estado. Cuando esto ocurre, la instancia no puede comunicarse con otros hosts.
Amazon Elastic Block Store (Amazon EBS): sin E/S de disco, las instrucciones de lectura o escritura se bloquean. Por ejemplo, la creación de archivos temporales, las lecturas de bibliotecas del sistema o las bases de datos.
CPU: todas las tareas anteriores requieren tiempo de CPU para funcionar. El uso del 100 % de la CPU durante un tiempo prolongado impide que el kernel realice operaciones normales del sistema operativo.
Estos problemas también podrían acumularse y provocar un efecto dominó. Por ejemplo, si se queda sin memoria y el administrador OOM finaliza un proceso importante. A continuación, un segundo proceso que depende del primer proceso detenido inicia un número mucho mayor de ciclos de CPU. Si esta tarea está relacionada con el disco, este ciclo también puede consumir el volumen EBS. Además, el problema se puede trasladar a una instancia diferente que está esperando la comunicación de la instancia que no responde.
Resolución
Si su sistema deja de responder con frecuencia debido a la sobreutilización de recursos, haga lo siguiente:
Recopile información
- Utilice una herramienta de monitoreo como Amazon CloudWatch para observar tendencias y patrones de alta utilización de los recursos.
- Si tiene varios servicios y no está seguro de cuál de ellos está sobreutilizando recursos, instale una utilidad como atop .
- Revise los registros de la aplicación y del sistema operativo. Estos registros suelen estar ubicados en /var/log/.
- Revisa el historial de comandos para ver si hubo un error humano. El historial de comandos se encuentra normalmente en el archivo ~/.bash_history.
- Revise los cronjobs ejecutando el comando crontab -l.
Actúe en función de los datos adquiridos
Evite la sobreutilización en el futuro
- Antes de implementar una nueva aplicación en producción, cree un entorno de prueba y un punto de referencia para determinar el proceso, la memoria, EBS y la red necesarios.
- Implemente de acuerdo con sus puntos de referencia, mientras crea tolerancia de errores. Para obtener más información, consulte lo siguiente:
Diseñe interacciones en un sistema distribuido para evitar errores
Tutorial: Configuración de una aplicación escalada y con carga balanceada
- Siga monitoreando sus instancias, y cree alarmas para ciertos umbrales de uso de recursos .