我正在使用 NodeJS 制作一个手工制作的 HTTP 代理,但是当每秒有很多请求时,net.js 在读取空连接结束时会进入无限循环。 (它随机发生在 40 req/s 左右)。
我分离了导致错误的代码,创建了一个简单的 HTTP 代理并引发了问题:
代码:https://gist.github.com/Ifnot/5336823
我使用命令“NODE_DEBUG=net node main.js”将 net.js 置于 Debug模式,即使所有连接似乎都已关闭,程序也会无限期地输出:
调试: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)
我做错了什么吗?有人知道会发生什么吗?为什么会出现这个问题?
(我使用的是node v0.10.4,问题在之前的版本v0.9.x中出现过)
最佳答案
这是 Nodejs 核心的一个错误。我们在这里讨论:
https://github.com/joyent/node/issues/5108
Bug出现在版本0.8.23
之后,所以解决方案是下载并编译node版本0.8.23
:
关于node.js - 简单 NodeJS HTTP 代理上的 net.js 上的无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15899687/