Nodejs读取无尽流的正确方式



我有一个web应用程序,通过无尽的流(或至少很长的流)的实时数据工作。我使用'data'事件来解析该流上的新块数据。问题是我有增加内存消耗,而这个流是活的。由于我没有为此流调用.read方法,因此所有数据都存储在流缓冲区中等待处理。所以,我想问,我能做些什么来减少我的内存消耗?禁用此流的内部缓冲(我不需要旧数据),从innerBuffer或mb中删除处理过的数据,通过.read方法工作?如有任何建议,不胜感激。

.on('data', function(chunk) {
     parseString(chunk, function (err, result) {
     //...
     });
})

因此,使用data事件是危险的。它会尽可能快地把数据转储给你。面对异步操作,这可能比您处理它的速度要快,在这种情况下,您的内存使用将稳步增加。您可以通过使用pause/resume:

很容易地修复此问题。
stream.on('data', function(chunk) {
  stream.pause();
  parseString(chunk, function (err, result) {
  //...
  stream.resume();
  });
})

如果已经有n parseString操作在运行,你也可以通过暂停来增加并行性。

相关内容

  • 没有找到相关文章

最新更新