Node.js:在不耗尽内存的情况下处理流



我正在尝试读取一个巨大的日志文件(250,000行),将每一行解析为JSON对象,并将每个JSON对象插入CouchDB进行分析。

我试图通过创建一个缓冲流来做到这一点,该流将单独处理每个块,但我总是在大约 300 行后耗尽内存。似乎使用缓冲流和util.pump应该避免这种情况,但显然不是。

(也许有比node.js和CouchDB更好的工具,但我有兴趣学习如何在node中进行这种文件处理.js并认为这应该是可能的。

下面的 CoffeeScript,这里的 JavaScript:https://gist.github.com/5a89d3590f0a9ca62a23

fs = require 'fs'
util = require('util')
BufferStream = require('bufferstream')
files = [
  "logfile1",
]
files.forEach (file)->
  stream = new BufferStream({encoding:'utf8', size:'flexible'})
  stream.split("n")
  stream.on("split", (chunk, token)->
    line = chunk.toString()
    # parse line into JSON and insert in database
  )
  util.pump(fs.createReadStream(file, {encoding: 'utf8'}), stream)

也许这会有所帮助:在 Node.js 中使用流时内存泄漏?

尝试使用pipe()来解决它。

相关内容

  • 没有找到相关文章

最新更新