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大。