1

このGoogle Dartテスト プログラムがあります。

#import('dart:io');

main() {
  var s = new HttpServer();

  s.defaultRequestHandler = (HttpRequest req, HttpResponse res) {
    res.statusCode = 200;
    res.contentLength = 4;
    res.outputStream.writeString("sup!!");
    res.outputStream.close();
  };

  s.listen('127.0.0.1', 80);
  print('its up!');
}

Chrome と Firefox で正常に動作し、supメッセージが表示されます。

ただし、Apache Bench を試してみるとすぐにハングします (abハングします)。

Z:\www>ab -n 1 -c 1 "http://127.0.0.1/"
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient)...apr_poll: The timeout specified has expired (70007)

abApache HTTPサーバーをインストールすることで見つけることができ、binフォルダーの下に配置されます。

ab余談ですが、私が使用できる(そしてハングしない)ものに似た他のベンチマークツールはありますか?

4

1 に答える 1

4

contentLengthに問題がある可能性があります。4と書きましたが、実際のコンテンツの長さは5です。たとえば、abがcontentLengthを見た場合、4文字を読み取り、接続が閉じるのを待つ可能性があります。ただし、サーバーが最後の文字の書き込みを待機しているため、接続はおそらく閉じられません。クライアントとサーバーはそれぞれ何かを待っているため、デッドロックが発生します。

于 2012-07-16T18:20:28.550 に答える