La instancia de AWS EC2 se está quedando sin memoria al ejecutar la aplicación NodeJs, no puede identificar la causa raíz debido a la supresión de registros

La instancia de AWS EC2 se está quedando sin memoria al ejecutar la aplicación NodeJs, no puede identificar la causa raíz debido a la supresión de registros

Como se indica en el título, tenemos una aplicación NodeJS ejecutándose en una instancia EC2 en AWS que esporádicamente se queda sin memoria y finaliza el proceso.

En términos comerciales, en realidad no es un obstáculo, ya que los sistemas redundantes se aseguran de que otra instancia se active y esté disponible a través del balanceador de carga. Pero aún nos gustaría saber qué es lo que hace que la instancia se quede sin memoria para poder evitarlo por completo.

Hemos revisado los registros que rodean la finalización del proceso para intentar descubrir qué está sucediendo, pero debido a que no hay memoria disponible, parece que el sistema operativo no puede escribir ningún registro durante ese tiempo. Después de finalizar el proceso, registra que ha suprimido varios registros y luego continúa con normalidad. Por lo tanto, asumimos que la supresión de registros nos impide obtener más información sobre la causa real del problema.

Ya intentamos desactivar la supresión de registros, pero todavía no registra nada durante el tiempo que el proceso no responde, excepto que ahora no informa la cantidad de registros que suprimió.

¿Alguna idea de cómo podríamos descubrir qué causa que el proceso se quede sin memoria?

Respuesta1

y mata el proceso.

ElprimeroLo que debes hacer es dejar de quedarte sin memoria. Reduzca el compromiso excesivo en el host.

Agregue un nuevo archivo en /etc/sysctl.d que contenga (inicialmente):

vm.overcommit_memory = 2
vm.overcommit_ratio = 15

Luego ejecútelo sudo sysctl -p (es posible que desee ajustar la proporción más adelante).

Luego puedes empezar a buscar lo que esté consumiendo mucha memoria.

información relacionada