Memoria
En este documento puede aprender sobre cómo depurar problemas relacionados con la memoria.
Mi proceso se queda sin memoria
Node.js (JavaScript) es un lenguaje con recolección de basura, por lo que es posible tener fugas de memoria a través de retenedores. Como las aplicaciones Node.js suelen ser multiinquilino, críticas para el negocio y de larga ejecución, es esencial proporcionar una forma accesible y eficiente de encontrar una fuga de memoria.
Síntomas
El usuario observa un aumento continuo del uso de memoria (puede ser rápido o lento, durante días o incluso semanas) y luego ve que el proceso se bloquea y reinicia mediante el administrador de procesos. El proceso puede estar funcionando más lento que antes y los reinicios hacen que algunas solicitudes fallen (el equilibrador de carga responde con 502).
Efectos secundarios
- Reinicio del proceso debido al agotamiento de la memoria y las solicitudes se pierden
- El aumento de la actividad de GC lleva a un mayor uso de la CPU y un tiempo de respuesta más lento
- GC bloqueando el Bucle de Eventos causando lentitud
- El aumento del intercambio de memoria ralentiza el proceso (actividad de GC)
- Puede que no haya suficiente memoria disponible para obtener una instantánea de montón
Mi proceso utiliza la memoria de manera ineficiente
Síntomas
La aplicación utiliza una cantidad inesperada de memoria y/o observamos una actividad elevada del recolector de basura.
Efectos secundarios
- Un número elevado de fallos de página
- Mayor actividad de GC y uso de la CPU