【发布时间】:2014-05-07 21:05:30
【问题描述】:
我正在运行一个带有 Node.JS 的 Socket.IO 服务器,它通常使用大约 400 MB 的内存,因为有很多数据被缓存以发送给客户端。然而,几个小时后,它突然开始在大约 40 分钟内增长到 1.4 GB 的使用量。有人告诉我使用 heapdump 来查找是否存在内存泄漏。
问题是堆转储只有 317 MB,而且里面没有任何异常,所以我一直在调试。我也用 nodetime 运行它,它说 V8 堆使用量约为 400 MB,但总 V8 堆大小为 1.4 GB。
如何找出剩余 1 GB 的来源?
【问题讨论】:
-
有趣的问题,不知道,但是...您是否尝试过更改 nodejs 版本和/或验证是否有任何theese 问题适用?
-
我在使用 TCP 套接字时遇到了同样的问题。
-
你解决了吗?我在使用 einaros websockets 时遇到了同样的问题。
-
@DeaglinG 不,我最终得到了一个每隔几个小时重新启动一次进程的 cronjob。
-
不确定它是否有帮助,但我认为它与关闭 websockets 回调有关。你应该尽量不要在发送命令的发送/错误回调中使用任何来自高分的变量。