我在Ubuntu 9.10上使用Apache2,我正在尝试调整Web应用程序的配置,以减少对HTTP请求的响应延迟。
在我的小型服务器上的中等负载期间,有24个apache2进程处理请求。其他请求排队。
使用“netstat”,我看到24个连接是ESTABLISHED,125个连接是TIME_WAIT。 我想弄清楚这是否被认为是合理的积压。
大多数请求都会在几分之一秒内得到服务,因此我假设请求相当快地通过接受队列,可能在1或2秒内,但我希望更加确定。
有人可以推荐一种简单的方法来衡量HTTP请求在接受队列中的时间吗?
到目前为止我遇到的建议似乎是在 apache2 worker接受连接之后启动时钟。我试图在此之前量化接受队列延迟。
提前谢谢, 大卫琼斯答案 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)
(因此表现不佳:)
您可以做的另一件事是将请求时间戳放在请求本身中,并在处理请求时立即进行比较。如果您在同一台计算机上生成流量或使时钟同步,则可以让您测量请求处理时间。