使用流减少nodejs应用程序内存?

时间:2014-03-28 16:42:29

标签: node.js highland.js

这可能是一个新手问题,但我搜索过,无法找到令人满意的答案。

我的node.js应用程序似乎消耗了大量内存。每个进程消耗大约100MB。我听说nodejs本身每个进程的内存占用量约为30MB。

该应用程序是一个JSON API,由MongoDB支持。在可能的情况下,一个API请求将导致许多数据库请求,主要是填充子关系。一个典型的查询是这样的:(1)根据查询条件获取一个objectIds数组,(2)迭代每个objectId,并向数据库发出一个查询来填充数据(有些调用水合)。

代码大量使用async.js。我试图分析内存使用情况,似乎async.js使用了大量内存,但没有内存泄漏的迹象。 async.js的作者也推出了一个流库highland.js(http://highlandjs.org/)。我是nodejs流的新手,我很好奇这是否是替换async.js的可能工具?该网站似乎提到underscore,但我主要使用async.js进行异步处理。

谢谢!

1 个答案:

答案 0 :(得分:0)

tldr:是的,使用流可能会减少内存占用。处理流时,一次处理数据块。另一种方法是基本上将所有数据预先加载到String,Buffer等中,然后再处理它。

但是,您应该注意,对于节点进程,100MB 大。 Node / v8假定您使用大约1.5 GB。一个很小的应用程序可能是128 MB,一个小的256,中等512. 1 GB是一个非常大的节点进程,此时您应该将您的应用程序分成更小的部分: