节点应用随着时间的推移逐渐占用内存

时间:2017-08-07 14:05:50

标签: node.js express memory-leaks v8 digital-ocean

我刚刚在DigitalOcean上推出了两个Express服务器以及一个mongodb实例。我正在使用PM2来保持它们都运行。

当我使用htop查看内存使用情况时,总使用量通常在220-235mb左右(总计488mb)。我唯一能看到改变的是蓝色条,我假设它是缓冲存储器,使用中的实际绿色内存似乎总是大致相同。

我查看DO的图表然而在过去的24小时内,记忆图表一直缓慢向上攀升,比如说每小时总量的0.5%,有时它会下降,但总体来说它在上升,此时它一直在徘徊几个小时内,总内存的60-65%左右。

这些节点Web服务器几乎没有流量,但内存持续增长缓慢。所以我的问题是,这可能是我的一台服务器内存泄漏,还是v8引擎逐渐扩展其内存的本质?

1 个答案:

答案 0 :(得分:2)

如果您正在考虑内存泄漏,那么为什么不通过写2-3个小时转换来检查您的理论,时间差为2-3小时。那么你可以肯定地回答你的问题。

您可以使用this module在磁盘上编写堆转储,然后使用Chrome开发者工具进行比较。此外,您将看到堆中的确切位置。

仅供参考:snapshots comparison from official documentation