使用节点stream时内存不足

我正在尝试索引一个大(1 500 000行)文件并将其推送到弹性search。 为了做到这一点,我使用节点jsstream; 但是,我一直在耗尽内存。 我究竟做错了什么?

var rl = null; initialize(function() { var stream = fs.createReadStream(process.argv[2]); rl = readline.createInterface({input: stream, terminal: false}); var i = 0; rl.on('line', function(line) { rl.pause(); processObject(++i, extractObject(line)); }); rl.on('close', function() { console.log('\nRefreshed index;'); process.exit(); }); }); function processObject(number, input) { client.index({ index: INDEX, type: TYPE, id: number, body: input }, function (error, response) { rl.resume(); if(number % 1000 == 0) process.stdout.write('.'); }); }; 

好的,这里是解决scheme。 我写的代码很好, 问题在于'readline'包。 事实上,rl.pause()函数并不会暂停行读取,因为它应该如此。 我通过切换到“逐行”包来解决这个问题。 使用相同的代码,该进程在60 MB内运行。