APache ab 压力测试工具

1、关于压力测试

    压力测试是一种基本的质量保证行为,它是每个重要软件测试工作的一部分。压力测试的基本思路很简单:不是在常规条件下运行手动或自动测试,而是在计 算机数量较少或系统资源匮乏的条件下运行测试。通常要进行压力测试的资源包括内部内存、CPU 可用性、磁盘空间和网络带宽等。一般用并发来做压力测试。

2、压力测试指标

吞吐率(Requests per second)

概念:服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请求数。某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。

计算公式:总请求数 / 处理完成这些请求数所花费的时间,即

Request per second = Complete requests / Time taken for tests

并发连接数(The number of concurrent connections)

概念:某个时刻服务器所接受的请求数目,简单的讲,就是一个会话。

并发用户数(The number of concurrent users,Concurrency Level)

概念:要注意区分这个概念和并发连接数之间的区别,一个用户可能同时会产生多个会话,也即连接数。

用户平均请求等待时间(Time per request)

计算公式:处理完成所有请求数所花费的时间/ (总请求数 / 并发用户数),即

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

服务器平均请求等待时间(Time per request: across all concurrent requests)

计算公式:处理完成所有请求数所花费的时间 / 总请求数,即

Time taken for / testsComplete requests

可以看到,它是吞吐率的倒数。

同时,它也=用户平均请求等待时间/并发用户数,即

Time per request / Concurrency Level

3、关于Apache ab压力测试工具

   ab是Apache超文本传输协议(HTTP)的性能测试工具。其设计意图是描绘当前所安装的Apache的执行性能,主要是显示你安装的Apache每秒可以处理多少个请求。

4、下载安装

    1)下载地址:http://httpd.apache.org/

    2)下载方法:https://jingyan.baidu.com/article/29697b912f6539ab20de3cf8.html

    3)常用命令参数:http://httpd.apache.org/docs/2.0/programs/ab.html

4)安装文件:

    5)使用apache ab

        cmd进入apache ab的bin目录:


APache ab 压力测试工具_第1张图片
cmd进入apache ab的bin目录

        执行ab压力测试命令:ab -n 100 -c 10  http://www.baidu.com/


APache ab 压力测试工具_第2张图片
执行ab压力测试命令

5、压力测试说明

    1)测试场景:模拟10个用户,对百度首页发起总共100次请求

    2)测试命令:ab -n 100 -c 10  http://www.baidu.com/

    3)ab常用参数的介绍:

        -n :总共的请求执行数,缺省是1;

        -c: 并发数,缺省是1;

        -t:测试所进行的总时间,秒为单位,缺省50000s

        -p:POST时的数据文件

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

    4)测试结果详细说明:

        Server Software:        bfe/1.0.8.14 //被测试的服务器所用的软件信息,这里使用的是百度自己    开发的反向代理Baidu Front End,类似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:          /index.html//请求的具体文件

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

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

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

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

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

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

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

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

        Time per request:       109.287 [ms] (mean) //从用户角度看,完成一个请求所需要的时间(因用户数量不止一个,服务器完成10个请求,平均每个用户才接收到一个完整的返回,所以该值是下一项数值的10倍。)

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

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

        Connection Times (ms)

              min  mean[+/-sd] median   max

        Connect:       47   74  12.9     74     106

        Processing:     9   32  20.2     32     106

        Waiting:        9   29  19.1     27      98

        Total:         66  106  20.8    106     195

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

        //需要注意的是表中的Total并不等于前三行数据相加,因为前三行的数据并不是在同一个请求中采集到的,可能某个请求的网络延迟最短,但是系统处理时间又是最长的呢。所以Total是从整个请求所需要的时间的角度来统计的。这里可以看到最慢的一个请求花费了195ms,这个数据可以在下面的表中得到验证。

        Percentage of the requests served within a certain time (ms)

          50%    106

          66%    109

          75%    111

          80%    114

          90%    118

          95%    154

          98%    176

          99%    195

         100%    195 (longest request)

        //这个表第一行表示有50%的请求都是在106ms内完成的,可以看到这个值是比较接近平均系统响应时间(第一个Time per request:       109.287 [ms] (mean) )

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

你可能感兴趣的:(APache ab 压力测试工具)