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

当安装完apache的时候,就可以在bin下面找到ab.exe然后进行apache 负载压力测试。

打开网易新闻 查看精彩图片

ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问。它的测试目标是基于URL的,因此,它既可以用来测试apache的负载压力,也可以测试nginx、lighthttp、tomcat、IIS等其它Web服务器的压力。

ab命令对发出负载的计算机要求很低,它既不会占用很高CPU,也不会占用很多内存。但却会给目标服务器造成巨大的负载,其原理类似CC攻击。自己测试使用也需要注意,否则一次上太多的负载。可能造成目标服务器资源耗完,严重时甚至导致死机。

示例 : ab -n 5000 -c 50 http://wind24.top/index.php

50个用户访问5000次服务器

打开网易新闻 查看精彩图片

结果如下 :

打开网易新闻 查看精彩图片

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

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

打开网易新闻 查看精彩图片

这几行组成的表格主要是针对响应时间也就是第一个Time per request进行细分和统计。一个请求的响应时间可以分成网络链接(Connect),系统处理(Processing)和等待(Waiting)三个部分。表中min表示最小值;mean表示平均值;[+/-sd]表示标准差(Standard Deviation) ,也称均方差(mean square error),这个概念在中学的数学课上学过,表示数据的离散程度,数值越大表示数据越分散,系统响应时间越不稳定。median表示中位数;max当然就是表示最大值了。

打开网易新闻 查看精彩图片

这个表第一行表示有50%的请求都是在15ms内完成的。以此类推,90%的请求是小于等于1052ms的。刚才我们看到响应时间最长的那个请求是7065ms,那么显然所有请求(100%)的时间都是小于等于195毫秒的,也就是表中最后一行的数据肯定是时间最长的那个请求(longest request)。

打开网易新闻 查看精彩图片