我的nodejs应用程序有内存泄漏。为了恢复应用程序的目的,它是由iOS应用程序调用的api和后台管理某些内容。 该应用程序正在生产中,由于使用,我们遇到了一些内存泄漏。
服务器上的内存总是在上升,永远不会下降。 我尝试使用node-heapdump来分析问题。
首先,我看到node-heapdump给出的快照的堆大小与应用程序在内存中占用的大小(堆大小~30Mb和RAM大小~100Mb)之间存在很大差异,其中差异来自来自?
然后我只是通过刷新一个不返回任何内容的主页来看到堆大小的增量。 有人知道我的问题可能在哪里吗?
有关信息,我使用nodejs版本0.10.x和expressjs 4.0.0
先谢谢你们。
修改
我安装了memwatch-next并引发了泄漏事件。 我遇到的错误就是这个:
警告:检测到可能的EventEmitter内存泄漏。 11名泄密听众 添加。使用emitter.setMaxListeners()来增加限制。
我尝试设置defaultMaxListeners但是当我强调应用程序时,泄漏事件会在某个时间后引发。 有谁知道那个错误意味着什么?
答案 0 :(得分:2)
我在memwatch包中遇到了类似的问题并切换到了memwatch-next,并且安装时没有出现node-gyp错误并且生成了工作。至于RSS和heapdump之间的区别,我和你在同一条船上。
答案 1 :(得分:0)
尝试从https://www.npmjs.com/package/memwatch找到内存泄漏泄漏和统计信息。
希望它会有所帮助。
答案 2 :(得分:0)
我认为你需要这个工具:easy-monitor
答案 3 :(得分:0)
可能我建议您尝试使用--inspect参数运行该应用程序,这将使您可以附加Chrome开发工具并拍摄内存快照。从这里开始,在测试过程中进行一次启动,然后在完成对应用程序的测试之后再进行一次(对应用程序没有更多请求,但必须仍在运行。)这将使您了解到底是什么导致了内存的增长。>
从这里您将能够看到导致增长的原因,并希望能指出泄漏的位置。