我正在使用NodeJS制作手工HTTP代理,但是当每秒有很多请求时,net.js在读取null连接结束时进入无限循环。 (它以随机方式发生,大约40 req / s)。
我将导致错误的代码分开,创建了一个简单的HTTP代理抛出问题:
代码:https://gist.github.com/Ifnot/5336823
我使用命令“NODE_DEBUG = net node main.js”将net.js置于调试模式,即使所有连接似乎都关闭,程序也会无限期地输出:
调试:https://gist.github.com/Ifnot/5274181
注意:当循环开始时,我可以看到这个错误:
(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)
我做错了吗?谁知道会发生什么?为什么会出现此问题?
(我正在使用节点v0.10.4,在以前的版本v0.9.x中看到了问题)
答案 0 :(得分:0)
这是来自nodejs核心的错误。我们在这里谈论:
https://github.com/joyent/node/issues/5108
Bug来自版本0.8.23
,因此解决方案是下载并编译节点版本0.8.23
: