在阿帕奇服务器的套件中,有一个叫 做ab(ApacheBench)的工具。ApacheBench主要是用来测试阿帕奇服务器执行效率用的
ApacheBench 可以针对某个特定的 URL 仿真出连续的联机请求,同时还可以仿真出同时间点数个相同的联机请求,因此利用 ApacheBench 可帮助我们在网站开发期间仿真实际上线可能的情况,利用仿真出来的数据做为调整服务器设定或程序的依据。 ApacheBench 的用法如下:
Usage: /usr/local/apache/bin/ab [options] [http://]hostname[:port]/path Options are:
-n requests Number of requests to perform
-c concurrency Number of multiple requests to make -t timelimit Seconds to max. wait for responses -p postfile File containg data to POST
-T content-type Content-type header for POSTing -v verbosity How much troubleshooting info to print -w Print out results in HTML tables
-x attributes String to insert as table attributes -y attributes String to insert as tr attributes -z attributes String to insert as td or th attributes -V Print version number and exit -k Use HTTP KeepAlive feature
-h Display usage information (this message)
假设我们要对 echo.fcg 做测试,仿真 1000 次的联机请求,而且同一时间有 20 个并行的 (concurrent) 联机请求的情况,只要在命令列模式下执行
$ ab -n 1000 -c 20 http://localhost/fcgi-bin/echo.fcg
之后ab工作后会把结果显示出来
This is ApacheBench, Version 1.3
Copyright c 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright c 1998-1999 The Apache Group, http://www.apache.org/
Benchmarking localhost (be patient)... Server Software: Apache/1.3.6
Server Hostname: localhost
Server Port: 80
Document Path: /fcgi-bin/echo.fcg
Document Length: 995 bytes
Concurrency Level: 20
Time taken for tests: 6.859 seconds
Complete requests: 1000
Failed requests: 0
Total transferred: 1142000 bytes
HTML transferred: 995000 bytes
Requests per second: 145.79
Transfer rate: 166.50 kb/s received
Connnection Times (ms)
min avg max
Connect: 0 4 61
Processing: 62 128 771
Total: 62 132 832
以上结果指出,在同时间20 个联机请求 (Concurrency Level) 的情况下,完成 1000 次的联机请求,共花了 6.859 秒(Time taken for tests),因此这个程序每秒平均可以处理(Requests per second) 145.79
个联机请求。