Node.js中的驻留内存使用情况

时间:2015-04-01 20:03:58

标签: javascript node.js memory memory-leaks

在我们的一个应用程序中,我们发现当使用率激增时,RSS(例如top(1)报告的)会增加,达到稳定状态并开始振荡,但永远不会回落。经过一段时间的休息后,再次强调服务器会导致另一个更高的平台。这种趋势持续到许多千兆字节的RAM。

起初我们怀疑Javascript端有内存泄漏,因此开始跟踪process.memoryUsage()返回的统计信息:

Observed Trends in RSS, Heap Total, and Heap Used

这里有几个阶段:

  • 启动服务器后,我们用100个并发的长时间运行请求打了几分钟,然后让服务器运行到晚上。 RSS在当晚保持在320MB左右;和堆使用只是保持振荡。我们每分钟都在发出痕迹,所以这可能解释了堆中的运动。
  • 在9a左右,我们用另一轮并发请求点击它并转换到涉及2个滚动长时间运行请求(下载10MB数据)的线程的工作流程。我们将它们保持运行直到大约2p并停止它们。在这个阶段,在RSS最初出现之后,它再次开始趋于平稳并保持在400到450MB之间。
  • 最后一位是另一轮并发请求。在这里,RSS增长到480MB到500MB

我想知道是否有办法弄清楚堆外发生了什么,可能会占用所有内存并且不会释放它。除此之外,是否有任何隐藏的选项限制堆外的内存使用?

我不得不问。我们做得太多了吗?这对于Node来说是否正常?

0 个答案:

没有答案