性能测试工具ab

 简介

   ab全名是ApacheBench,是apache自带的一款模拟http请求的web服务器性能测试工具,安装apache的时候会默认帮我们装上。它非常容易使用,完全可以模拟各种条件下的各种请求。

 

   一个简单的例子

   我们使用ab工具写一个简单的例子,执行命令:ab -n 100 -c 10 http://www.baidu.com/。这个命令的意思是启动ab,然后向http://www.baidu.com/发送100个请求(-n 100),一共有10个并发用户(-c 10),命令执行结果如下(横杠后面是我加的解释):

    This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking www.baidu.com (be patient).....done
Server Software:        BWS/1.0
Server Hostname:        www.baidu.com
Server Port:            80
Document Path:          /————————————————请求URL中的根绝对路径,通过它的后缀名我们一般可以了解该请求的类型
Document Length:        9726 bytes————————————————HTTP响应数据的正文长度
Concurrency Level:      10————————————————并行用户数,这是我们设置的参数
Time taken for tests:   0.753939 seconds————————————————表示所有这些请求被处理完成所花费的总时间
Complete requests:      100————————————————表示总请求数,这是我们设置的参数
Failed requests:        0————————————————表示失败的请求数,包括在连接服务器、发送数据、接受数据等环节发生异常以及无响应超时,超时时间可以通过ab的-t参数来设置。而如果接收到的HTTP响应数据的头信息中含有2xx以为的状态码,则会在测试结果显示另一个名为“Non-2xx responses”的统计项,用户统计这部分数据,这些请求不算失败的请求。
Write errors:           0
Total transferred:      1033995 bytes————————————————所有请求的响应数据总长度,包括每个HTTP响应数据的头信息和正文数据的长度。注意这里不包括HTTP请求数据的长度,所以它仅仅代表从web服务器流向用户PC的应用层数据总长度。
HTML transferred:       994200 bytes————————————————Total transferred的区别在于去掉了响应数据中头信息的长度
Requests per second:    132.64 [#/sec] (mean)————————————————吞吐率,我们关注的指标,mean表示它是平均值
Time per request:       75.394 [ms] (mean)————————————————用户平均请求等待时间,mean表示它是平均值
Time per request:       7.539 [ms] (mean, across all concurrent requests)————————————————服务器平均请求处理时间,是吞吐率的倒数,mean表示它是平均值
Transfer rate:          1338.30 [Kbytes/sec] received————————————————单位时间从服务器获取的数据长度,这个统计项可以很好的说明服务器在处理能力达到极限时,其出口带宽的需求量。

Connection Times (ms)————————————————每个请求处理时间的分布情况
             min  mean[+/-sd] median   max
Connect:       16   16   0.5     16      19
Processing:    38   51  47.8     41     292
Waiting:       20   23   3.0     23      43
Total:         54   67  47.8     57     308
Percentage of the requests served within a certain time (ms)————————————————每个请求处理时间的分布情况

 50%     57
 66%     58
 75%     59
 80%     59
 90%     61
 95%     96
 98%    308
 99%    308
100%    308 (longest request)

其中有:

Requests per second=Complete requests/Time taken for tests

Time per request=Time taken for tests/(Complete requests/Concurrency Level)

Time per request( across all concurrent requests)=Time taken for tests/Complete requests正是吞吐率的倒数。也等于Time per request/Concurrency Level

Transfer rate=Total transferred/Time taken for tests

 

小结

   这儿只是简单介绍了ab的用法,更多详细的option可以查看官方文档。

   另外,ab可以直接在web服务器本地发起测试请求,这一点非常重要,因为我们通常希望测试的是服务器的处理时间,而不包括数据的网络传输时间以及用户PC本地的计算时间。需要清楚的是,ab进行一切测试的本质是基于HTTP的,所以可以说它是对web服务器软件的黑盒测试,它所获得的一切数据和计算结果都可以通过HTTP来解释。

你可能感兴趣的:(性能测试)