Linux入门实践笔记(六)——压力测试工具Apache Bench的安装、使用和结果解读
内容
本文介绍了压力测试工具Apache Bench在Centos系统中的安装,常用的测试指令,以及测试结果的解读。
版本
操作系统: CentOS 7.2 64位
Apache Bench:2.3
说明
转载请说明出处:Linux入门实践笔记(六)——压力测试工具Apache Bench的安装、使用和结果解读
步骤
Apache Bench的介绍
Apache Bench,简称ab,是Apache服务器自带的基准性能测试的工具。可用于压力测试,用来测试系统的吞吐量、服务端请求平均处理时间、用户请求平均等待时间等性能指标。
ab命令上手很简单,通过ab命令可以创建并发线程模拟多用户访问或调用某一URL地址。ab命令的选项、输出的介绍可以参考其当前版本官网文档。
首先,我们介绍下ab检测的性能指标:
吞吐量
吞吐量(Requests per second)是在某个并发度下服务器每秒处理的请求数。它是服务器并发处理能力的量化描述,单位是reqs/s。计算公式为:总请求数/处理请求的总耗时。 吞吐量越大说明服务器的性能越好。
请求平均处理时间
请求平均处理时间(Time per request,across all concurrent requests)是服务器处理请求的平均时间,计算公式为:处理请求的总耗时/总请求数。它是服务器吞吐量的倒数。也等于,用户请求平均等待时间/并发用户数。
请求平均等待时间
请求平均等待时间(Time per request)是用户等待请求响应的平均时间,计算公式为:处理请求的总耗时/(总请求数/并发用户数)。
“请求平均处理时间”和“请求平均等待时间”两个概念非常容易混淆,举一个例子进行说明:比如100个用户同时执行上传文档的操作,那么并发用户数为100,假设服务器可以同时处理这100个请求,并且每个文件上传操作的耗时都是1s。那么请求总耗时时间为1s,吞吐量为100reqs/s。请求平均处理时间为0.01s,请求平均等待时间为1s。也就是说,请求平均处理时间是从服务器的角度出发的,请求平均等待时间是从用户的角度出发的。
Apache Bench的安装
执行sudo yum -y install httpd-tools 安装apache httpd的工具包,这个工具包中包含压力测试工具Apache Bench。
#安装apache httpd的工具包
[root@Server ~]# yum install httpd-tools
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package httpd-tools.x86_64 0:2.4.6-80.el7.centos.1 will be installed
--> Finished Dependency Resolution
#中间省略
Installed:
httpd-tools.x86_64 0:2.4.6-80.el7.centos.1
Complete!
执行命令ab -V,如果成功打印ab的版本信息,则表明ab安装成功。
#成功打印ab的版本信息
[user1@Server ~]$ ab -V
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Apache Bench的使用和结果解读
执行ab -n 100 -c 5 http://www.baidu.com/
,对百度进行ab测试。命令中的-n表示总共请求100次,-c表示并发用户数为5,即使用5个并发线程同时请求。
注意,此处填写的url不能只是域名,还要包含请求的路径,如果请求根目录,必须以"/"结尾。因此执行ab -n 100 -c 5 http://www.baidu.com
是不行的。
#使用5个并发线程,对百度进行100次请求。
[user1@Server ~]$ ab -n 100 -c 5 http://www.baidu.com/
#打印ab的版本信息
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
#进行基准测试
Benchmarking www.baidu.com (be patient).....done
#测试结果
#HTTP服务器信息
Server Software: BWS/1.1
#服务器域名
Server Hostname: www.baidu.com
#服务器端口号
Server Port: 80
#请求资源的标识符uri
Document Path: /
#第一次成功请求响应的页面大小,如果后续请求响应的页面大小发生变化,会认为请求出错。
Document Length: 118155 bytes
#并发数
Concurrency Level: 5
#整个请求的总耗时
Time taken for tests: 1.244 seconds
#成功收到响应的请求数
Complete requests: 100
#失败请求数,失败包括连接,读取,不正确的内容长度或异常4种情况。
Failed requests: 98
(Connect: 0, Receive: 0, Length: 98, Exceptions: 0)
#写入错误数
Write errors: 0
#测试过程从服务器接收到的数据总量(包含Header信息)
Total transferred: 11968154 bytes
#测试过程从服务器接收到的HTML页面的大小(不包含Hreader信息)
HTML transferred: 11872694 bytes
#服务器的吞吐量:平均每秒处理的请求数
Requests per second: 80.39 [#/sec] (mean)
#???
Time per request: 62.197 [ms] (mean)
#请求的平均处理时间,是服务器吞吐量的倒数
Time per request: 12.439 [ms] (mean, across all concurrent requests)
#每秒数据流量的大小
Transfer rate: 9395.67 [Kbytes/sec] received
#连接耗时
Connection Times (ms)
#最小 平均 最大
min mean[+/-sd] median max
Connect: 6 10 5.3 7 34
Processing: 23 43 44.7 29 390
Waiting: 9 14 5.7 11 32
Total: 29 53 47.0 37 408
#特定耗时的请求数占比
Percentage of the requests served within a certain time (ms)
50% 37 #50%的请求在37ms以内
66% 55
75% 60
80% 63
90% 76
95% 102
98% 273
99% 408 #99%的请求在408ms以内
100% 408 (longest request)