ab是apache自带的压力测试工具,ab是apachebench命令的缩写。
当安装完apache的时候,就可以在bin下面找到ab.exe然后进行apache 负载压力测试。
![](http://dingyue.ws.126.net/2021/0412/c68e5391p00qrfgzd0017c000fe0050m.png)
ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问。它的测试目标是基于URL的,因此,它既可以用来测试apache的负载压力,也可以测试nginx、lighthttp、tomcat、IIS等其它Web服务器的压力。
ab命令对发出负载的计算机要求很低,它既不会占用很高CPU,也不会占用很多内存。但却会给目标服务器造成巨大的负载,其原理类似CC攻击。自己测试使用也需要注意,否则一次上太多的负载。可能造成目标服务器资源耗完,严重时甚至导致死机。
示例 : ab -n 5000 -c 50 http://wind24.top/index.php
50个用户访问5000次服务器
![](http://dingyue.ws.126.net/2021/0412/f72574a9p00qrfgzd000wc000fe005lm.png)
结果如下 :
![](http://dingyue.ws.126.net/2021/0412/98f62ce2p00qrfgzd002mc000fe00fcm.png)
Server Software: Apache/2.4.39
被测试的Web服务器,这里我们用的apache
Server Hostname: wind24.top
被测试的域名
Server Port: 80
被测试端口
Document Path: /index.php
请求的具体文件
Document Length: 227 bytes
请求的文件index.html大小
Concurrency Level: 50
并发级别,也就是并发数,请求中-c参数指定的数量
Time taken for tests: 7.113 seconds
本次测试总共花费的时间,单位为秒
Complete requests: 5000
本次测试总共发起的请求数量
Failed requests: 0
失败的请求数量。因网络原因或服务器性能原因,发起的请求并不一定全部成功,通过该数值和Complete requests相除可以计算请求的失败率,作为测试结果的重要参考。
Total transferred: 103314 bytes
总共传输的数据量,指的是ab从被测服务器接收到的总数据量,包括index.html的文本内容和请求头信息。
HTML transferred: 1135000 bytes
从服务器接收到的index.html文件的总大小,等于Document Length*Complete requests=227 bytes*5000=1135000 bytes
Requests per second: 702.89 [#/sec] (mean)
平均(mean)每秒完成的请求数:QPS,这是一个平均值,等于Complete requests/Time taken for tests=5000/7.113=702.89
Time per request: 71.135 [ms] (mean)
从用户角度看,完成一个请求所需要的时间(因用户数量不止一个,服务器完成50个请求,平均每个用户才接收到一个完整的返回,所以该值是下一项数值的50倍。)
Time per request: 1.423 [ms] (mean, across all concurrent requests)
服务器完成一个请求的时间。
Transfer rate: 4627.15 [Kbytes/sec] received
网络传输速度。对于大文件的请求测试,这个值很容易成为系统瓶颈所在。要确定该值是不是瓶颈,需要了解客户端和被测服务器之间的网络情况,包括网络带宽和网卡速度等信息。
![](http://dingyue.ws.126.net/2021/0412/e6daec72p00qrfgzd000fc000aw0038m.png)
这几行组成的表格主要是针对响应时间也就是第一个Time per request进行细分和统计。一个请求的响应时间可以分成网络链接(Connect),系统处理(Processing)和等待(Waiting)三个部分。表中min表示最小值;mean表示平均值;[+/-sd]表示标准差(Standard Deviation) ,也称均方差(mean square error),这个概念在中学的数学课上学过,表示数据的离散程度,数值越大表示数据越分散,系统响应时间越不稳定。median表示中位数;max当然就是表示最大值了。
![](http://dingyue.ws.126.net/2021/0412/d327a609p00qrfgzd000lc000fe005gm.png)
这个表第一行表示有50%的请求都是在15ms内完成的。以此类推,90%的请求是小于等于1052ms的。刚才我们看到响应时间最长的那个请求是7065ms,那么显然所有请求(100%)的时间都是小于等于195毫秒的,也就是表中最后一行的数据肯定是时间最长的那个请求(longest request)。
![](http://dingyue.ws.126.net/2021/0412/791d6de8p00qrfgzd0038c000p000anm.png)
热门跟贴