简单NodeJS HTTP代理上的net.js上的无限循环

时间:2013-04-09 10:38:11

标签: node.js

我正在使用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中看到了问题)

1 个答案:

答案 0 :(得分:0)

这是来自nodejs核心的错误。我们在这里谈论:

https://github.com/joyent/node/issues/5108

Bug来自版本0.8.23,因此解决方案是下载并编译节点版本0.8.23

http://blog.nodejs.org/2013/04/08/node-v0-8-23-legacy/