Hoy ejecuté mi script para la indexación del sistema de archivos para actualizar el índice de archivos RAID y después de 4h se bloqueó con el siguiente error:
[md5:] 241613/241627 97.5%
[md5:] 241614/241627 97.5%
[md5:] 241625/241627 98.1%
Creating missing list... (79570 files missing)
Creating new files list... (241627 new files)
<--- Last few GCs --->
11629672 ms: Mark-sweep 1174.6 (1426.5) -> 1172.4 (1418.3) MB, 659.9 / 0 ms [allocation failure] [GC in old space requested].
11630371 ms: Mark-sweep 1172.4 (1418.3) -> 1172.4 (1411.3) MB, 698.9 / 0 ms [allocation failure] [GC in old space requested].
11631105 ms: Mark-sweep 1172.4 (1411.3) -> 1172.4 (1389.3) MB, 733.5 / 0 ms [last resort gc].
11631778 ms: Mark-sweep 1172.4 (1389.3) -> 1172.4 (1368.3) MB, 673.6 / 0 ms [last resort gc].
<--- JS stacktrace --->
==== JS stack trace =========================================
Security context: 0x3d1d329c9e59 <JS Object>
1: SparseJoinWithSeparatorJS(aka SparseJoinWithSeparatorJS) [native array.js:~84] [pc=0x3629ef689ad0] (this=0x3d1d32904189 <undefined>,w=0x2b690ce91071 <JS Array[241627]>,L=241627,M=0x3d1d329b4a11 <JS Function ConvertToString (SharedFunctionInfo 0x3d1d3294ef79)>,N=0x7c953bf4d49 <String[4]\: ,\n >)
2: Join(aka Join) [native array.js:143] [pc=0x3629ef616696] (this=0x3d1d32904189 <undefin...
FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory
1: node::Abort() [/usr/bin/node]
2: 0xe2c5fc [/usr/bin/node]
3: v8::Utils::ReportApiFailure(char const*, char const*) [/usr/bin/node]
4: v8::internal::V8::FatalProcessOutOfMemory(char const*, bool) [/usr/bin/node]
5: v8::internal::Factory::NewRawTwoByteString(int, v8::internal::PretenureFlag) [/usr/bin/node]
6: v8::internal::Runtime_SparseJoinWithSeparator(int, v8::internal::Object**, v8::internal::Isolate*) [/usr/bin/node]
7: 0x3629ef50961b
El servidor está equipado con 16 gb de RAM y 24 gb de intercambio SSD. Dudo mucho que mi script supere los 36 gb de memoria. Al menos no debería
El script crea un índice de archivos almacenados como Matriz de objetos con metadatos de archivos (fechas de modificación, permisos, etc., sin grandes datos)
Aquí está el código completo del script: http://pastebin.com/mjaD76c3
Ya he experimentado problemas de nodos extraños en el pasado con este script que me obligó, por ejemplo. dividir el índice en varios archivos ya que el nodo fallaba cuando trabajaba en archivos tan grandes como String. ¿Hay alguna manera de mejorar la administración de memoria de nodejs con grandes conjuntos de datos?
ng serve
o distribuye el resultado deng build
la carpeta / dist por otro servidor web como express? Pero si su proyecto Angular está usando más de la memoria estándar de 1.7GB, ¿quizás tenga un problema arquitectónico en su aplicación? Parece que está utilizando el entorno de desarrollo con nmp start, tal vez esta sea una solución para ello github.com/mgechev/angular-seed/issues/2063En caso de que alguien se encuentre con esto en un entorno donde no puede establecer las propiedades del nodo directamente (en mi caso, una herramienta de compilación):
Puede configurar las opciones de nodo utilizando una variable de entorno si no puede pasarlas en la línea de comando.
fuente
Si desea aumentar el uso de memoria del nodo globalmente, no solo un script, puede exportar una variable de entorno, como esta:
export NODE_OPTIONS=--max_old_space_size=4096
Entonces no necesita jugar con archivos cuando ejecuta compilaciones como
npm run build
.fuente
Encontré este problema al intentar depurar con VSCode, por lo que solo quería agregar esto, así es como puede agregar el argumento a su configuración de depuración.
Puede agregarlo a la
runtimeArgs
propiedad de su configuración enlaunch.json
.Ver ejemplo a continuación.
fuente
Estos son algunos valores de marca para agregar información adicional sobre cómo permitir más memoria cuando inicia su servidor de nodo.
1GB - 8GB
fuente
Estaba luchando con esto incluso después de configurar --max-old-space-size.
Luego me di cuenta de la necesidad de poner opciones --max-old-space-size antes del script de karma.
También es mejor especificar ambas sintaxis: max-old-space-size y --max_old_space_size mi script para karma:
referencia https://github.com/angular/angular-cli/issues/1652
fuente
--max-old-space-size=8192 --optimize-for-size --max_old_space_size=8192 --optimize_for_size
y funcionóTuve un problema similar al hacer la construcción angular AOT. Los siguientes comandos me ayudaron.
Fuente: https://geeklearning.io/angular-aot-webpack-memory-trick/
fuente
sudo npm -g install increase-memory-limit --unsafe-perm
fwiw, encontrar y arreglar un cerdo de memoria con algo como memwatch podría ayudar.
fuente
%appdata%
presione enter%appdata%
> carpeta npmng.cmd
en tu editor favorito--max_old_space_size=8192
al bloque IF y ELSESu
node.cmd
archivo se ve así después del cambio:fuente
Se puede usar la siguiente variable de entorno:
Otra nota:
console.log()
también consume memoria en el terminal.Solo traté de comentar el console.log () en la terminal. porque eso también tomará memoria.
fuente
NODE_OPTIONS= --max-old-space-size=somesize
si desea cambiar la memoria globalmente para el nodo (windows) vaya a la configuración avanzada del sistema -> variables de entorno -> nueva variable de usuario
fuente
He intentado 👍 el siguiente código y funciona bien✌.
ejecute el cmd para establecer un nuevo tamaño.
O puede consultar el enlace para obtener más información https://github.com/nodejs/node/issues/10137#issuecomment-487255987
fuente
Solo quiero agregar que en algunos sistemas, incluso aumentando el límite de memoria del nodo
--max-old-space-size
, no es suficiente y hay un error del sistema operativo como este:En este caso, probablemente se deba a que alcanzó el mmap máximo por proceso.
Puede verificar max_map_count ejecutando
y aumentarlo corriendo
y corríjalo para que no se reinicie después de reiniciar agregando esta línea
en el
/etc/sysctl.conf
archivoConsulta aquí para más información.
Un buen método para analizar el error es ejecutar el proceso con
strace
fuente
Recientemente me enfrenté a este mismo problema y me encontré con este hilo, pero mi problema era con la
React
aplicación. A continuación, los cambios en el comando de inicio de nodo resolvieron mis problemas.Sintaxis
Ejemplo
¿Por qué el tamaño es 16000 en max-old-space-size?
Básicamente, varía según la memoria asignada a ese subproceso y la configuración de su nodo.
¿Cómo verificar y dar el tamaño correcto?
Esto es básicamente permanecer en nuestro motor
v8
. El siguiente código le ayuda a comprender el tamaño de almacenamiento dinámico de su motor de nodo local v8.fuente
Acabo de enfrentar el mismo problema con mi instancia EC2 t2.micro que tiene 1 GB de memoria.
Resolví el problema creando un archivo de intercambio usando esta url y establecí la siguiente variable de entorno.
export NODE_OPTIONS=--max_old_space_size=4096
Finalmente el problema se ha ido.
Espero que sea útil para el futuro.
fuente
En caso de que pueda ayudar a las personas que tienen este problema al usar aplicaciones de nodejs que producen un registro pesado, un colega resolvió este problema conectando las salidas estándar a un archivo.
fuente
Si está intentando iniciar no
node
solo, sino algún otro software, por ejemplowebpack
, puede usar la variable de entorno y elcross-env
paquete:fuente
Para la agrupación angular de proyectos, he agregado la siguiente línea a mi archivo pakage.json en la sección de secuencias de comandos .
Ahora, para agrupar mi código, uso en
npm run build-prod
lugar deng build --requiredFlagsHere
¡espero que esto ayude!
fuente
Nodo de actualización a la última versión. Estaba en el nodo 6.6 con este error y actualicé a 8.9.4 y el problema desapareció.
fuente
En mi caso, había ejecutado la
npm install
versión anterior del nodo, después de algún día actualicé la versión del nodo y la memoria RAMnpm install
para algunos módulos. Después de esto recibí este error. Para solucionar este problema, eliminé la carpeta node_module de cada proyecto y volví a ejecutarnpm install
.Espero que esto pueda solucionar el problema.
Nota: Esto estaba sucediendo en mi máquina local y se solucionó solo en la máquina local.
fuente
Este comando funciona perfectamente. Tengo 8 GB de RAM en mi computadora portátil, así que configuré size = 8192. Se trata de ram y también necesita establecer el nombre del archivo. Corro acumulación de ejecución NPM comando Es por eso que he usado build.js .
fuente
En mi caso, actualicé la versión de node.js a la última y funcionó de maravilla.
fuente