【发布时间】:2015-04-15 19:50:39
【问题描述】:
我使用pm2 start ... 运行我的服务器,pm2 monit 在 2 小时后显示3GB memory。所以我附上了memwatch,现在又等了2个小时,pm2 monit显示的内存又达到了3GB。
所以,我检查了 memwatch 生成的日志。给我看:
{ before: { nodes: 75659, size_bytes: 11141702, size: '10.63 mb' },
after: { nodes: 73226, size_bytes: 10840598, size: '10.34 mb' },
change:
{ size_bytes: -301104,
size: '-294.05 kb',
freed_nodes: 5141,
allocated_nodes: 2708,
还有一个:
{ before: { nodes: 72591, size_bytes: 10728318, size: '10.23 mb' },
after: { nodes: 73284, size_bytes: 10798062, size: '10.3 mb' },
change:
{ size_bytes: 69744,
size: '68.11 kb',
freed_nodes: 5931,
allocated_nodes: 6620,
现在我真的很困惑,这些是最后的日志,所以我很确定这些是当pm2 monit 显示巨大的内存泄漏时生成的日志。
那么,为什么memwatch 显示10MB+ 内存和pm2 monit 显示3GB+?
现在切换到 forever 或 monit 之类的东西,看看泄漏是否仍然存在。
多一点背景
- 我一直在尝试配置文件并找到泄漏点,但配置文件上没有显示任何泄漏。
- memwatch diff 在客户端连接时启动,在客户端断开连接时获取差异。
【问题讨论】:
-
关于这个,我在过去 2 天试图分析它,但找不到问题。所以我最终决定继续使用 Golang,这是惊人的,巨大的内存和性能差异。非常有效率。最后没有令人困惑的泄漏。加上它很容易编码,在不到一天的时间内将 javascript 重新编码为 golang。
标签: node.js memory-leaks