¿Cómo puedo solucionar los problemas con una instancia de Linux EC2 que no supera una comprobación de estado por una utilización excesiva de los recursos?

10 minutos de lectura
0

Mi instancia de Linux de Amazon Elastic Compute Cloud (Amazon EC2) no ha superado la comprobación de estado de la instancia por una utilización excesiva de sus recursos.

Breve descripción

A continuación se indican tres de los motivos más habituales por los que la comprobación de estado podría fallar debido a la utilización excesiva de recursos:

  • El uso de la CPU de la instancia es casi del 100 % y la instancia no tenía suficiente capacidad de procesamiento para que se ejecutara el kernel.
  • El dispositivo raíz está lleno al 100 % e impide que otros procesos se completen o comiencen.
  • Los procesos en ejecución en la instancia usaban toda su memoria e impidieron la ejecución del kernel.

Solución

Detención e inicio de la instancia

Advertencia:

  • Los datos almacenados en los volúmenes del almacén de instancias se pierden cuando se detiene la instancia. Asegúrese de guardar una copia de seguridad de los datos antes de detener la instancia. A diferencia de los volúmenes respaldados por EBS, los volúmenes del almacén de instancias son efímeros y no admiten la persistencia de datos. Para obtener más información, consulte Qué ocurre cuando se detiene una instancia.
  • Las operaciones de detención e inicio de la instancia obligan al kernel a detener cualquier proceso en ejecución. Se trata de una solución temporal para devolver recursos al sistema operativo. Si no aborda la causa principal del problema, la utilización excesiva persistirá.
  • La dirección IPv4 pública estática que Amazon EC2 asignó automáticamente a la instancia en el momento del lanzamiento o el inicio cambia después de la detención y el inicio. Para conservar una dirección IPv4 pública y que no cambie cuando se detenga la instancia, use una dirección IP elástica.

Para obtener más información, consulte Detener e iniciar la instancia.

Comprobación de las métricas de uso de la CPU de Amazon CloudWatch

Visualice las métricas de CloudWatch de la instancia. Si el uso de la CPU es del 100 % o casi, use las siguientes opciones para solucionar el problema:

Nota: Si se muestran errores al ejecutar comandos de AWS CLI, compruebe que esté utilizando la versión más reciente de AWS CLI.

Comprobación de los posibles errores en el registro del sistema de la instancia

Compruebe si en el registro del sistema aparecen los errores No space left on device o Out of memory.

Error «No space left on device»

Si aparece un error similar a «OSError: [Error 28] No space left on device '/var/lib/'» en el registro del sistema de la instancia, significa que el sistema de archivos que contiene la carpeta en la lista está lleno. En este ejemplo, /var/lib está lleno.

Puede liberar espacio en el sistema de archivos mediante uno de estos métodos:

Método 1: Utilización de la consola serie de EC2 para instancias de Linux

Si ha activado la consola serie de EC2 para instancias de Linux, puede usarla para solucionar los problemas con los tipos de instancias basadas en Nitro compatibles y las instancias bare metal. La consola serie le ayuda a solucionar problemas de arranque, configuración de red y configuración SSH. La consola serie se conecta a su instancia sin necesidad de una conexión de red en funcionamiento. Puede acceder a la consola serie mediante la consola de Amazon EC2 o AWS CLI.

Si no ha utilizado anteriormente la consola serie de EC2, no olvide revisar los requisitos previos y configurar el acceso antes de intentar conectarse. Si no se puede acceder a su instancia y no ha configurado el acceso a la consola serie, siga las instrucciones del Método 2: Utilización de una instancia de rescate. Para obtener más información sobre cómo configurar la consola serie de EC2, consulte Configurar el acceso a la consola serie de EC2.

Método 2: Utilización de una instancia de rescate

Advertencia: El siguiente procedimiento requiere detener la instancia. Los datos almacenados en los volúmenes del almacén de instancias se pierden cuando se detiene la instancia. Asegúrese de guardar una copia de seguridad de los datos antes de detener la instancia. A diferencia de los volúmenes respaldados por EBS, los volúmenes del almacén de instancias son efímeros y no admiten la persistencia de datos. Para obtener más información, consulte Qué ocurre cuando se detiene una instancia.

1.    Lance una nueva instancia de EC2 en su nube virtual privada (VPC). Use la misma imagen de máquina de Amazon (AMI) en la misma zona de disponibilidad que la instancia dañada. La nueva instancia se convierte en su instancia de rescate.

Como alternativa, use una instancia existente a la que pueda acceder. La instancia existente debe usar la misma AMI y estar en la misma zona de disponibilidad que la instancia deteriorada.

2.    Detenga la instancia deteriorada.

3.    Desconecte el volumen raíz de Amazon Elastic Block Store (Amazon EBS) (/dev/xvda o /dev/sda1) de su instancia deteriorada. Anote el nombre del dispositivo (/dev/xvda o /dev/sda1) del volumen raíz.

4.    Conecte el volumen EBS como dispositivo secundario (/dev/sdf) a la instancia de rescate.

5.    Conéctese a su instancia de rescate mediante SSH.

6.    Cree un directorio de punto de montaje (/rescue) para el nuevo volumen asociado a la instancia de rescate.

$ sudo mkdir /rescue

7.    Monte el volumen en el directorio creado en el paso 6.

$ sudo mount /dev/xvdf1 /rescue

Puede que el dispositivo (/dev/xvdf1) esté asociado a la instancia de rescate con otro nombre de dispositivo distinto. Utilice el comando lsblk para ver los dispositivos de disco disponibles junto con sus puntos de montaje y averiguar los nombres correctos de los dispositivos.

Nota: Es posible que se muestre un mensaje de error parecido al siguiente:

«...wrong fs type, bad option, bad superblock on /dev/nvme2n1, missing codepage or helper program, or other error».

El error anterior se debe a un conflicto de UUID con el sistema de archivos XFS. Si se muestra este error, consulte ¿Por qué no puedo montar mi volumen de Amazon EBS?

8.    Ejecute el comando du -h para comprobar qué archivos ocupan más espacio.

du -shcm /rescue/var/lib/* |sort -n

9.    Elimine los archivos según sea necesario para liberar espacio adicional.

10.    Ejecute el comando unmount para desmontar el dispositivo secundario de la instancia de rescate.

$ sudo umount /rescue

Si la operación de desmontaje no se realiza correctamente, es posible que tenga que detener o reiniciar la instancia de rescate para permitir un desmontaje limpio.

11.    Desasocie el volumen secundario (/dev/sdf) de la instancia de rescate. A continuación, asócielo a la instancia original como /dev/xvda (volumen raíz).

12.    Inicie la instancia y, a continuación, compruebe si responde.

Puede cambiar el tamaño del volumen raíz de EBS mediante los siguientes pasos:

1.    Solicite la modificación del tamaño del volumen de EBS.

2.    Amplíe un sistema de archivos de Linux después de cambiar el tamaño de un volumen mediante una instancia de rescate.

Error «Out of memory»

Si el error «Out of memory: kill process» aparece en el registro del sistema de la instancia, significa que la memoria de la instancia está agotada. Cuando se agota la memoria, el kernel no tiene suficiente memoria para ejecutarse y se terminan otros procesos para liberar memoria.

Para obtener más información sobre cómo solucionar errores out of memory (OOM), consulte Out of memory:kill process.

Para comprobar los registros de errores de memoria (Out of Memory), siga los pasos del Método 2. Utilización de una instancia de rescate hasta el paso 7: Monte el volumen.

A continuación, utilice los siguientes comandos para buscar alertas de falta de memoria en los registros según la distribución de Linux:

Amazon Linux 1 y Amazon Linux 2

sudo grep -i -r 'out of memory' /var/log/

Amazon Linux 2023

$ sudo journalctl -p err | grep -i "out of memory"

Alternativa:

$ sudo dmesg | grep -i "out of memory"

Para obtener más información sobre cómo solucionar errores out of memory (OOM), consulte Out of memory:kill process.

Fallo de asignación de páginas

El fallo de asignación de páginas se produce cuando el asignador de memoria del kernel no responde a la solicitud de asignación. Cuando esto ocurre, se agrega un mensaje de fallo de asignación de páginas al registro del sistema.

Para solucionar este problema de falta de memoria, plantéese actualizar la instancia a un tipo de instancia mayor. Como alternativa, en el caso de instancias que usen volúmenes de almacén de instancias efímeros, añada almacenamiento de intercambio a la instancia para reducir la presión sobre la memoria.

Para obtener más información sobre la configuración del espacio de intercambio, consulte:

Nota: La instancia utiliza el espacio de intercambio cuando la cantidad de RAM está llena. Puede usar el espacio de intercambio para instancias que tienen una cantidad pequeña de RAM, aunque eso no equivale a ampliar la RAM. Como el espacio de intercambio se encuentra en el disco duro de la instancia, el rendimiento es más lento en comparación con la RAM real. Para obtener más memoria o más rápida, plantéese aumentar el tamaño de la instancia.

Para obtener más información sobre los fallos de asignación de páginas, consulte What are page allocation failures? en el sitio web de Red Hat.

Información relacionada

¿Por qué motivo mi instancia EC2 de Linux es inaccesible y no supera una o ambas verificaciones de estado?

¿Qué pasos debo seguir antes de cambiar el tipo de instancia de mi instancia Linux de EC2?

¿Cómo puedo diagnosticar un uso elevado de la CPU en una instancia de Windows de EC2?

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 10 meses