node.js - 随着时间的推移, Node 应用程序逐渐消耗内存

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

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

当我使用 htop 查看内存使用情况时,总使用量通常约为 220-235mb(总共 488mb)。我能看到的唯一变化是蓝色条,我认为它是缓冲内存,实际使用中的绿色内存似乎总是相同。

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

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

最佳答案

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

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

仅供引用:snapshots comparison from official documentation

关于node.js - 随着时间的推移, Node 应用程序逐渐消耗内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45548882/

相关文章:

c++ - 确定函数何时在 C++ 中分配内存

ios - 添加 subview 时内存泄漏

json - 如何格式化 JSON 对象键/值对

mongodb - JEST 和 MongoDB 的异步问题

程序退出时出现 C++ 内存错误

mysql - 使用 Node 和 MySQL,如何从表 A 中为特定用户 ID 选择行(表 B)

node.js - 如何防止 mongodb 支持的分布式 Nodejs Web 服务器架构中的竞争条件

mysql - 用于 MySQL UUID 二进制数据类型的 Nodejs ORM

node.js - Nodejs - 依赖项(非常基本的) - Express -> 它是 NodeJS 或插件的一部分

node.js - beforeCreate 在尝试创建条目时未执行 - Sails JS