这可能是一个新手问题,但我搜索过,无法找到令人满意的答案。
我的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
进行异步处理。
谢谢!
答案 0 :(得分:0)
tldr:是的,使用流可能会减少内存占用。处理流时,一次处理数据块。另一种方法是基本上将所有数据预先加载到String,Buffer等中,然后再处理它。
但是,您应该注意,对于节点进程,100MB 不大。 Node / v8假定您使用大约1.5 GB。一个很小的应用程序可能是128 MB,一个小的256,中等512. 1 GB是一个非常大的节点进程,此时您应该将您的应用程序分成更小的部分: