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)

您可以ab通过安装 Apache HTTP 服务器找到它,它将位于该bin文件夹下。

附带说明:是否有其他一些类似于ab我可以使用(并且不会挂起)的基准测试工具?

4

1 回答 1

4

contentLength 可能有问题。您写了 4,但实际内容长度为 5。例如,如果 ab 看到 contentLength,它可能会读取 4 个字符并等待连接关闭。但是,连接可能不会关闭,因为服务器正在等待写入最后一个字符。客户端和服务器都在等待某些东西,导致死锁。

于 2012-07-16T18:20:28.550 回答