节点应用程序随着时间的推移逐渐消耗内存

Node app eating memory incrementally over time

我刚刚在 DigitalOcean 上启动了两个 Express 服务器以及 mongodb 的一个实例。我正在使用 PM2 来保留它们 运行.

当我使用 htop 查看内存使用情况时,总使用量通常在 220-235mb 左右(总共 488mb)。我唯一能看到变化的是蓝色条,我认为这是缓冲内存,实际使用的绿色内存似乎总是差不多。

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

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

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

您可以使用 this module 将 heapdump 写入磁盘,然后使用 Chrome 开发人员工具对其进行简单比较。此外,您将看到堆内到底放了什么。

仅供参考:snapshots comparison from official documentation