在recent SO question中,我概述了在处理大量每个包含数百万条记录的csv文件时遇到的OOM条件。事件队列中的节流事件
我越看到这个问题,越是在Node.js上阅读,越是确信OOM不会因为内存泄漏而发生,但是因为我没有限制数据输入到系统中。
该代码只是盲目地吸收所有数据,为每一行创建一个回调事件。事件不断增加到主事件循环中,最终变得非常大以至于耗尽所有可用内存。
什么是Node处理这种情况的惯用模式?我是否应该将csv文件读取到某种阻塞队列中,一旦阻塞队列,阻塞文件读取器解析更多数据?处理大型数据集有没有好的例子?
更新:要快于它可以处理不同的输出把这个更简单,节点可以处理输入和松弛被存储在存储器中(排队作为事件队列事件)。因为有很多松弛,内存最终会耗尽。所以问题是:将输入限制为输出速率的惯用方法是什么?
如果我的答案没有提供足够的细节,那么共享一些示例代码可以帮助我做一个更具体的示例。 – Paul
代码链接在第一句话中。谢谢。 –
我的错误是,我习惯于在被问到的问题中看到相关的代码。我会尽快更新我的答案。 – Paul