Al ejecutar un proceso de Node que sea intensivo en memoria nos podemos encontrar que este finalice de una forma abrupta con un mensaje similar a FATAL ERROR: invalid table size Allocation failed - JavaScript heap out of memory
. Lo que nos indica que este se ha quedado sin memoria. Generalmente esto no es debido a que el ordenador se quede sin memoria, sino a que se ha utilizado la máxima asignada a un proceso de Node. Por lo cual se puede solucionar fácilmente aumentando la memoria máxima en Node.
Cambiar la memoria predeterminada en Node
La memoria máxima que puede usarse en un proceso de Node se puede configurar asignando el nuevo valor en MB al comando --max-old-space-size
durante el lanzamiento del proceso. Así, para aumentar la memoria a 4GB se puede escribir
node --max-old-space-size=4096 index.js
Cambiar la memoria en PM2
En el caso de trabajar con PM2 esta opción se puede indicar en el archivo pm2.json
, lo que nos da algo más de flexibilidad y control sobre este valor. Así, para conseguir los mismos 4GB de antes se debería crear un archivo como el siguiente
{ "apps": [ { "node_args": "--max_old_space_size=4096" } ] }
Conclusiones
Hoy hemos visto cómo se puede aumentar fácilmente la memoria máxima de Node para poder lanzar en nuestros sistemas procesos más complejos.
Imagen de Theodor Moise en Pixabay