如何调试引发此错误的应用程序:
(node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit.
Trace
at Socket.EventEmitter.addListener (events.js:160:15)
at Socket.Readable.on (_stream_readable.js:653:33)
at Socket.EventEmitter.once (events.js:179:8)
at TCP.onread (net.js:527:26)
我找不到假定的泄漏对象来增加侦听器限制.setMaxListeners(0);
解决方案(来自fardjad 和jan salawa)
通过 jan salawa 的搜索,我找到了一个工作库(longjohn https://github.com/mattinsler/longjohn)用于增加堆栈跟踪的详细程度。根据法贾德的回应,我发现我们必须制作原型EventEmitter.addListener
AND EventEmitter.on
.
通过该解决方案,我可以获得这个新的跟踪:
(node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit.
Trace
at EventEmitter.addListener.EventEmitter.on (xxx/main.js:44:15)
at Readable.on (_stream_readable.js:653:33)
at ServerResponse.assignSocket (http.js:1072:10)
at parser.onIncoming (http.js:1979:11)
at parserOnHeadersComplete (http.js:119:23)
at socket.ondata (http.js:1912:22)
at TCP.onread (net.js:510:27)
事实证明这是nodejs核心的一个bug,我们在这里讨论这个问题:https://github.com/joyent/node/issues/5108 https://github.com/joyent/node/issues/5108
针对有问题的 http 服务器的解决方案EventEmitter memory leak detected
并填充可用内存/可用CPU时间:
恢复到旧版本v0.8.23
。 (您可以从这里下载并安装/编译它:http://blog.nodejs.org/2013/04/08/node-v0-8-23-legacy/ http://blog.nodejs.org/2013/04/08/node-v0-8-23-legacy/)
2018 年更新:我看到了关于这个主题的一些反馈,而这个问题似乎已经消失了很多年。请注意,此响应是仅适用于使用 Nodejs 构建的泄漏 http 服务器。如果您处于其他情况,请查看此线程上的其他回复,并且不要降级您的版本(按照此回复的建议),您会浪费时间。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)