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

标签 node.js

我正在使用 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:

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

关于node.js - 简单 NodeJS HTTP 代理上的 net.js 上的无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15899687/

相关文章:

javascript - 在 MongoDB 中的 updateMany() 之前使用 $unwind

node.js - mongodb 聚合更新集合

node.js - 在 Google App Engine 上运行的 NextJs 应用程序的正确配置是什么?

node.js - 在node.js express中通过body-parser POST表单数据时,数据始终为 'undefined'

node.js - 关闭连接 MySQL Node.js

node.js - Hls.js 'Access-Control-Allow-Origin' 错误

node.js - 使用 NGINX 创建反向代理。我错过了什么?

javascript - 如何使用 MVC 并在我的 Node 应用程序中包含文件

node.js - 错误: Cannot query across one-to-many for property TypeORM

javascript - 失败的测试未显示在 jasmine-node 中