1

私はこのようなHello worldの例を使用しています-

var sys = require("sys"),
my_http = require("http");
my_http.createServer(function(request,response){

        response.writeHeader(200, {"Content-Type": "text/plain"});
        response.writeHeader(200,{"Connection":"Keep-Alive"});
        response.write("Hello World");
        response.end();
}).listen(8080);
sys.puts("Server Running on 8080");

クライアント側では、次のように ab を使用しています (5k の同時接続を使用した合計 100000 リクエスト)

ab -n 100000 -c 5000 http://192.168.0.99:8080/

netstat -antp | grep 8080 | grep ESTABLISHED |wc -lすると、200 から 300 の範囲の値しか取得できませ ん。サーバー側では、同じコマンドで 10 から 20 の同時接続しか表示されません。

まず、なぜ 2 つの数値に違いがあるのでしょうか。どちらも同じではないでしょうか?

次に、何千もの ESTABLISHED 接続が表示されないのはなぜですか?

サーバー側の設定 - http://pastebin.com/Cc77YQp7

クライアント側の設定 - http://pastebin.com/4pV16TuD

ご覧のとおり、TIME_WAIT を 1 秒で期限切れになるように設定し、Google の後で他のパラメーター (ulimit を増やすなど) も最適化しましたが、これら 2 つの問題の根本的な原因を見つけることができません。

apr_socket_recv: Connection timed out (110)実際、クライアント側で(abツールで)何度もエラーが発生します

クライアントは Ubuntu 12 LTS で実行され、Node.JS は Debian 安定版 (wheezy) で実行されています。

4

1 に答える 1

0

ソケット プーリングの値を増やす必要がある場合があります。試す:

my_http.globalAgent.maxSockets = Infinity // または妥当な数...

于 2013-11-07T04:56:34.080 に答える