根据我的服务器监控,我的内存使用量随着时间的推移逐渐增加:
在正常运行约4周后,它最终导致问题/崩溃(这是有道理的,因为我在EC2上使用m1.large实例=> 8GB RAM,并且RAM似乎增加到大约1.5 GB /周)。
如果我重新启动node.js应用程序,内存使用情况将重置。
然而......我通过process.memoryUsage()
跟踪我的内存使用情况,即使在约1周后,我也看到了
{"rss":"693 Mb","heapTotal":"120 Mb","heapUsed":"79 Mb"}
我错过了什么?显然泄漏是在节点中,但过程似乎没有意识到它......
答案 0 :(得分:1)
您可以尝试使用node-memwatch模块,这有助于在Node中进行泄漏检测和堆差异。
堆差异看起来类似于:
{
"before": { "nodes": 11625, "size_bytes": 1869904, "size": "1.78 mb" },
"after": { "nodes": 21435, "size_bytes": 2119136, "size": "2.02 mb" },
"change": { "size_bytes": 249232, "size": "243.39 kb", "freed_nodes": 197,
"allocated_nodes": 10007,
"details": [
{ "what": "String",
"size_bytes": -2120, "size": "-2.07 kb", "+": 3, "-": 62
},
{ "what": "Array",
"size_bytes": 66687, "size": "65.13 kb", "+": 4, "-": 78
},
{ "what": "LeakingClass",
"size_bytes": 239952, "size": "234.33 kb", "+": 9998, "-": 0
}
]
}