1

NodeJSで手作りのHTTP Proxyを作っているのですが、1秒あたりのリクエスト数が多いと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 で問題が見られました)

4

1 に答える 1

0

これは、nodejs コアのバグです。私たちはここで話している:

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

バグは version0.8.23の後に発生するため、解決策はノード version をダウンロードしてコンパイルすること0.8.23です。

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

于 2013-04-25T18:23:28.490 に答える