如何调试引发此错误的应用程序:

(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);的假定泄漏对象

SOLUTION (from fardjad and jan salawa)

通过jan salawa的搜索,我找到了一个工作库(longjohn),用于增加堆栈跟踪的详细程度.根据fardjad的回答,我发现我们必须制作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

Solution for bugged http servers thats throw an 100 and fill up the available memory / available CPU times :

恢复到旧版本v0.8.23.(你可以从这里下载并安装/编译:http://blog.nodejs.org/2013/04/08/node-v0-8-23-legacy/)

UPDATE 2018 :.我在这个话题上看到了一些反馈,而这个问题多年来似乎已经消失了.注意,这个响应是only for a leaking http server build with nodejs.如果你在其他情况下,请查看此线程上的其他响应,不要降级你的版本(如此响应中所建议的),你将浪费时间.

Node.js相关问答推荐

如何在Node.js 中设置图表js的背景色

当变量在另一个文件中初始化时,在初始化错误之前无法访问变量

一个大型的单个 Redis 实例可以处理所有事情,还是多个 Redis 实例?

处理嵌套元素时,使用xml2js库解析XML时发生错误

为什么这个 module.export 函数如果我直接传递它就不起作用,但如果我将它包装在一个匿名函数中就可以工作

为什么运行 yarn 命令会出错 - yargs-parser的完整性判断失败

每秒从套接字传来的数据有哪些存储方式?

Axios 响应循环通过函数只返回第一个映射对象的结果

MERN 堆栈项目中的 React [create-react-app] 正在提供依赖项

Web3.js 脚本在监听 CreatedPairs 时退出

node.js 中 pdfkit-tables 中的垂直线

在 PassportJS 中使用多种本地策略

使用 Webpack 和 font-face 加载字体

如何在 MongoDB 上只收听 localhost

安装 node.JS 时,node.js 运行时和 npm 包管理器选项有什么区别?

fs.createWriteStream 不会立即创建文件?

Node.js 连接仅适用于本地主机

将 Heroku App 连接到 Atlas MongoDB 云服务

Nodejs将字符串转换为UTF-8

为什么 Node.js 被命名为 Node.js?