Tengo una aplicación de nodo que produce el siguiente error
$ export NODE_OPTIONS=--max_old_space_size=24000 $ time npm run build ... terminate called after throwing an instance of 'std::bad_alloc' ...No se da más información en la consola. Tengo algunos volcados de pila, pero no estoy seguro de si están completos.
Lo extraño para mí es que esto sucede de manera muy consistente aproximadamente al mismo tiempo y (mirando el uso de memoria a través de htop) sucede de manera muy consistente alrededor de 18 GB de uso de memoria. Pero por lo que sé, le he dicho a npm que puede usar más de 18 GB.
Tengo 32 GB de memoria om en mi máquina. Mi máquina ni siquiera comienza a intercambiar antes de que la aplicación del nodo se bloquee. A mi modo de ver, todavía hay memoria para consumir, le he dicho al nodo que puede consumir más memoria y, sin embargo, se niega.
También intenté configurarlo en algo mucho más alto como 51 GB, tengo una partición de intercambio que también es de 32 GB. Sucede exactamente lo mismo, la aplicación se bloquea con 18 GB de memoria consumida.
He mirado los ulimit, pero parecen estar bien:
$ ulimit -m unlimited $ ulimit -a real-time non-blocking time (microseconds, -R) unlimited core file size (blocks, -c) unlimited data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 127351 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 127351 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited¿Hay alguna otra razón por la que el nodo se negará a consumir más memoria?
Tal vez no sea relevante, pero esta es una compilación gatsby, he intentado agregar --inspect a NODE_OPTIONS , pero tengo la impresión de que me estoy conectando a algún proceso de 'administración' y no al proceso que realmente se queda sin memoria. , (si estoy en lo correcto, Gatsby generará nuevos procesos secundarios para hacer la compilación real).
Por lo que vale, alguna información extra:
$ npm -v 7.20.6 $ node -v v14.17.4