Node.js如何setMaxListeners()

时间:2016-05-20 13:36:02

标签: node.js

之前我从未使用过node.js.但是从here开始执行solr安全代理的步骤。一切都很好,但它给了我这个警告。我知道我必须设置最大听众,但不知道我是怎么做的。请帮助我。

(node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit.
Trace
    at addListener (events.js:160:15)
    at /home/abc/node_modules/solr-security-proxy/node_modules/http-proxy/lib/node-http-proxy/routing-proxy.js:63:27
    at Array.forEach (native)
    at null.<anonymous> (/home/abc/node_modules/solr-security-proxy/node_modules/http-proxy/lib/node-http-proxy/routing-proxy.js:62:33)
    at emit (events.js:98:17)
    at addListener (events.js:138:10)
    at Array.0 (/home/abc/node_modules/solr-security-proxy/solr-security-proxy.js:69:13)
    at Server.handler (/home/abc/node_modules/solr-security-proxy/node_modules/http-proxy/lib/node-http-proxy.js:175:40)
    at Server.emit (events.js:98:17)
    at HTTPParser.parser.onIncoming (http.js:2164:12)
(node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit.
Trace
    at addListener (events.js:160:15)
    at Array.0 (/home/abc/node_modules/solr-security-proxy/solr-security-proxy.js:69:13)
    at Server.handler (/home/abc/node_modules/solr-security-proxy/node_modules/http-proxy/lib/node-http-proxy.js:175:40)
    at Server.emit (events.js:98:17)
    at HTTPParser.parser.onIncoming (http.js:2164:12)
    at HTTPParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:152:23)
    at Socket.socket.ondata (http.js:2022:22)
    at TCP.onread (net.js:528:27)

2 个答案:

答案 0 :(得分:0)

您在呼叫setMaxListeners(或addListener)的同一对象上拨打on,这将是EventEmitter

然而,如果你确实有一个发射器内存泄漏(而不仅仅是发生需要11个听众而不是更多),那么你需要从源头解决这个问题 - 提高限制不会对你有所帮助。

请参阅:How to debug “EventEmitter memory leak detected. 11 listeners added”

答案 1 :(得分:0)

我遇到了这个问题,因为我试图运行10个以上的异步任务,所以我确实确实需要10个以上的事件侦听器。但是实际的事件侦听器代码在我正在使用的库/模块中,所以我无法使用setMaxListeners(),因为我无权访问该对象。最后,在程序开始时一次覆盖全局值对我有用:

require('events').EventEmitter.defaultMaxListeners = 15;