in

javascript – Node.js heap out of memory

apple touch icon@2

Hoy ejecuté mi script para la indexación del sistema de archivos para actualizar el índice de archivos RAID y después de 4 h 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 de 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 una matriz de objetos con metadatos de archivos (fechas de modificación, permisos, etc., sin big data)

Aquí está el código de secuencia de comandos completo:
http://pastebin.com/mjaD76c3

Ya he experimentado problemas extraños con los nodos en el pasado con este script, lo 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 forma de mejorar la gestión de la memoria de nodejs con grandes conjuntos de datos?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Cadena de JavaScript – método substr ()

FCN9sjqeoJh8iWxrh2VYfk 1200 80

Contadores de Pokémon Go Entei: Cómo vencer a Entei y atrapar un brillante