Apache ab是著名的Web服务器软件Apache附带的一个小工具,它可以同时模拟多个并发请求,测试Apache等Web服务器的最大承载力。


Apache ab基本用法是:AB [options] [http://]hostname[:port]/path,其中几个最常见的Options选项如下:

-n:表示请求总数。
-c:表示并发用户数,并发用户数不能大于请求总数,否则会报错。
-URL:表示请求的目标URL。

Apache ab实战:

用Apache ab来测试下金大叔的新浪博客首页http://blog.sina.com.cn/jcy77,用10个并发总共执行1000次进行测试,命令如下:

ab -n1000 -c10 http://blog.sina.com.cn/jcy77


测试结果如下:
Server Software:        nginx/1.2.8//被测试的Web服务器软件名称
Server Hostname:        blog.sina.com.cn//请求的URL主机名
Server Port:           

Document Path:          /jcy77//请求的URL中的根绝对路径
Document Length:       

Concurrency Level:      10//并发用户数
Time taken for tests:   12.038 seconds//所有这些请求处理完成所花费的总时间
Complete requests:      1000//测试成功请求次数
Failed requests:        0//测试失败的请求数量
Write errors:           0
Total transferred:      63010000 bytes
HTML transferred:       62437000 bytes
Requests per second:    83.07 [#/sec] (mean)//吞吐率,相当于Loadrunner中的TPS(每秒事务数)
Time per request:       120.377 [ms] (mean)//用户平均请求等待时间,相当于Loadrunner中的平均事务响应时间
Time per request:       12.038 [ms] (mean, across all concurrent requests)//服务器的平均请求等待时间
Transfer rate:         

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        3   11   3.4     11      31
Processing:    51  108  18.3    104     239
Waiting:        8   32  15.6     29     108
Total:         71  120  19.7    115    

Percentage of the requests served within a certain time (ms)//这部分数据用于描述每个请求处理时间的分布情况。例如以下测试80%的请求处理时间都不超过128ms。这个处理时间是指前面的Time per request,即对于单个用户而言,平均每个请求的处理时间。
  50%    115
  66%    120
  75%    124
  80%    128
  90%    147
  95%    164
  98%    180
  99%    191
 100%   


上面的测试结果表明,在10个并发用户的情况下,访问金朝阳博客的响应时间在252ms以下。凭直觉我本人认为这个时间好像有问题?所以要多测试几次排除掉明显异常的数值(每次用Loadrunner测试时候,我也是这么做的,就是多测试排除掉明显异常的值)。


备注:Apache ab判断成功与否只是判断2xx响应代码,不接收服务器的返回值,所以响应以及网络带宽上占有优势,但是Loadrunner要完整接受服务器的返回值,所以在同样的响应时间下,Apache ab测试支持的并发用户数会大于Loadrunner,TPS值也相应的会比Loadrunner大。