压力测试工具ab的使用

1、什么是ab

ab 是apache自带的压力测试工具,ab是apachebench命令的缩写。

 

2、ab 的工作原理

ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问,从而达到压力测试的目的。

 

3、使用ab时的注意事项

ab命令对发出负载的计算机要求很低,它既不会占用很高CPU,也不会占用很多内存。

但却会给目标服务器造成巨大的负载,其原理类似CC攻击。

自己测试使用也需要注意,否则一次上太多的负载,可能造成目标服务器资源耗完,严重时甚至导致死机。

 

4、linux 上安装ab工具
  1. yum -y install httpd-tools

 

5、ab 常用参数说明

-n :总共的请求执行数,默认为1;

-c: 并发数,默认是1;

-t:测试持续多长时间,秒为单位,默认50000s

-p:POST时的数据文件

-w: 以HTML表的格式输出结果

注:-n 和 -t 参数一般只选择其一

 

6、ab 测试结果分析

Server Software: BWS/1.1 #表示目标使用的服务器,这里是百度使用的baidu web server,类似于Nginx

Server Hostname: www.baidu.com #被测主机名

Server Port: 443 #被测主机的服务端口号,一般http请求的默认端口号是80,https默认使用443端口

SSL/TLS Protocol: TLSv1.2,ECDHE-RSA-AES128-GCM-SHA256,2048,128 #目标使用的加密协议

Document Path: / #请求的具体文件

Document Length: 227 bytes # 请求的文件index.html大小

Concurrency Level: 100 # 并发级别,也就是并发数,请求中-c参数指定的数量

Time taken for tests: 3.942 seconds #本次测试总共花费的时间

Complete requests: 500 #本次测试总共发起的请求数量

Failed requests: 0 #请求失败的数量。因网络原因或服务器性能原因,发起的请求并不一定全部成功,通过该数值和Complete requests相除可以计算请求的失败率,作为测试结果的重要参考。

Total transferred: 540985 bytes #总共传输的数据量,指的是ab从被测服务器接收到的总数据量,包括index.html的文本内容和请求头信息。

HTML transferred: 113500 bytes #从服务器接收到的index.html文件的总大小,等于Document Length*Complete requests=227 bytes*500=113500 bytes

Requests per second: 126.85 [#/sec] (mean) #平均(mean)每秒完成的请求数:QPS,这是一个平均值,等于Complete requests/Time taken for
tests=500/3.942=126.85

Time per request: 788.333 [ms] (mean) #从用户角度看,完成一个请求所需要的时间

Time per request: 7.883 [ms] (mean, across all concurrent requests) #服务器完成一个请求的时间

Transfer rate: 134.03 [Kbytes/sec] received #网络传输速度。对于大文件的请求测试,这个值很容易成为系统瓶颈所在。要确定该值是不是瓶颈,需要了解客户端和被测服务器之间的网络情况,包括网络带宽和网卡速度等信息。

Connection Times (ms)
min mean[+/-sd] median max
Connect: 160 552 365.2 518 1689
Processing: 26 100 62.6 72 422
Waiting: 18 93 61.4 65 422
Total: 186 652 371.3 608 2111

注:这几行组成的表格主要是针对响应时间也就是第一个Time per request进行细分和统计。

一个请求的响应时间可以分成网络链接(Connect),系统处理(Processing)和等待(Waiting)三个部分。

表中min表示最小值; mean表示平均值;[+/-sd]表示标准差(Standard Deviation) ,也称均方
差(mean square error),这个概念在中学的数学课上学过,表示数据的离散程度,数值越大表示数据越分散,系统响应时间越不稳定。 median表示中位数; max表示最大值。

Total是从整个请求所需要的时间的角度来统计的。这里可以看到最慢的一个请求花费了2111ms,这个数据可以在下面的表中得到验证。

Percentage of the requests served within a certain time (ms)
50% 608
66% 626
75% 638
80% 678
90% 1003
95% 1693
98% 1797
99% 1807
100% 2111 (longest request)

注:这个表第一行表示有50%的请求都是在608ms内完成的,可以看到这个值是比较接近平均系统响应时间

以此类推,90%的请求是小于等于1003ms的。

刚才我们看到响应时间最长的那个请求是2111ms,那么显然所有请求(100%)的时间都是小于等于2111毫秒的,也就是表中最后一行的数据肯定是时间最长的那个请求(longest request)。

 

 



Top