Node.js - Распределение не удалось - процесс не хватает памяти даже с использованием анализатора JSONStream

Я пытаюсь прочитать и проанализировать около 12 больших (от 100 МБ + до 500 МБ +) файлов JSON в узле. Я пытался использовать JSONStream (как предлагалось многими другими в качестве решения этой проблемы), чтобы предотвратить следующую ошибку:

FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - process out of memory

Тем не менее, я все еще получаю эту ошибку. Это первый раз, когда я пытался использовать потоковое устройство для чтения файлов, как это, поэтому я не уверен, в чем может быть проблема. Прямо сейчас код у меня есть:

for (var i = 0; i < jsonFileArray.length; i++) {
    if (jsonFileArray[i].match(/\.json$/)) {
        var stream = fs.createReadStream(dirPath + jsonFileArray[i]).pipe(JSONStream.parse(['records', true, 'Categories']));

      stream.on('data', function(data) {
          console.log('received:', data);
        });
    }
}

В конце концов я хочу построить кумулятивный объект результата со всеми проанализированными данными из этих файлов, но до сих пор все, что я пробовал, лишало меня возможности анализировать все файлы. Предложения? Руководство?

1 ответ

Вы можете попробовать ветку "утечка памяти" из репозитория JSONStream. Эта ветвь исправляет утечку памяти, однако вы не можете использовать оператор "..".

Ссылка на ветку

Другие вопросы по тегам