如何衡量HTTP请求花在接受队列中的时间?

时间:2011-01-08 00:52:21

标签: http optimization time apache2 request

我在Ubuntu 9.10上使用Apache2,我正在尝试调整Web应用程序的配置,以减少对HTTP请求的响应延迟。

在我的小型服务器上的中等负载期间,有24个apache2进程处理请求。其他请求排队。

使用“netstat”,我看到24个连接是ESTABLISHED,125个连接是TIME_WAIT。 我想弄清楚这是否被认为是合理的积压。

大多数请求都会在几分之一秒内得到服务,因此我假设请求相当快地通过接受队列,可能在1或2秒内,但我希望更加确定。

有人可以推荐一种简单的方法来衡量HTTP请求在接受队列中的时间吗?

到目前为止我遇到的建议似乎是在 apache2 worker接受连接之后启动时钟。我试图在此之前量化接受队列延迟。

提前谢谢,   大卫琼斯

1 个答案:

答案 0 :(得分:0)

我不知道您是否可以在接受连接之前专门测量时间,但您可以使用apache utils附带的ab工具来测量响应时间的延迟和可变性(这是真正重要的部分) 。

它将生成具有您配置的并发性的流量,然后分解响应时间并为您提供标准偏差。

Server Hostname:        stackoverflow.com
Document Length:        192529 bytes
Concurrency Level:      3
Time taken for tests:   48.769 seconds
Complete requests:      100
Failed requests:        44
   (Connect: 0, Receive: 0, Length: 44, Exceptions: 0)
Write errors:           0
Total transferred:      19427481 bytes
HTML transferred:       19400608 bytes
Requests per second:    2.05 [#/sec] (mean)
Time per request:       1463.078 [ms] (mean)
Time per request:       487.693 [ms] (mean, across all concurrent requests)
Transfer rate:          389.02 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:      101  109   9.0    105     152
Processing:   829 1336 488.0   1002    2246
Waiting:      103  115  38.9    104     368
Total:        939 1444 485.2   1112    2351

Percentage of the requests served within a certain time (ms)
  50%   1112
  66%   1972
  75%   1985
  80%   1990
  90%   2062
  95%   2162
  98%   2310
  99%   2351
 100%   2351 (longest request)

(因此表现不佳:)

您可以做的另一件事是将请求时间戳放在请求本身中,并在处理请求时立即进行比较。如果您在同一台计算机上生成流量或使时钟同步,则可以让您测量请求处理时间。