ab压力测试

ab压力测试

安装ab

yum -y install httpd-tools

压力测试命令

ab -n 1000 -c 10 '请求地址'

注意:请求地址需要用引号引起来,否则如果请求地址带参数,请求会不完整

参数说明

  • -A:指定连接服务器的基本的认证凭据;
  • -c:指定一次向服务器发出请求数;
  • -C:添加cookie;
  • -g:将测试结果输出为“gnuolot”文件;
  • -h:显示帮助信息;
  • -H:为请求追加一个额外的头;
  • -i:使用“head”请求方式;
  • -k:激活HTTP中的“keepAlive”特性;
  • -n:指定测试会话使用的请求数;
  • -p:指定包含数据的文件;
  • -q:不显示进度百分比;
  • -T:使用POST数据时,设置内容类型头;
  • -v:设置详细模式等级;
  • -w:以HTML表格方式打印结果;
  • -x:以表格方式输出时,设置表格的属性;
  • -X:使用指定的代理服务器发送请求;
  • -y:以表格方式输出时,设置表格属性。

返回结果解析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Server Software: nginx/1.14.0 #被测试的服务器所用的软件信息
Server Hostname: api.biwinner.cn #被测主机名
Server Port: 80 #被测主机的服务端口号
Document Path: /coin/coin/1/coinpair/order/list #请求路径
Document Length: 1378 bytes #请求路径返回数据的大小
Concurrency Level: 100 #并发数
Time taken for tests: 79.022 seconds #本次测试花费的时间
Complete requests: 916 #完成的请求数
Failed requests: 2 #失败的请求数
(Connect: 0, Receive: 0, Length: 2, Exceptions: 0)
Keep-Alive requests: 0
Total transferred: 1447564 bytes #总共传输的数据量,指的是ab从被测服务器接收到的总数据量,包括index.html的文本内容和请求头信息。
HTML transferred: 1265602 bytes #从服务器接收到的index.html文件的总大小,等于Document Length*Complete requests
Requests per second: 11.59 [#/sec] (mean) #平均(mean)每秒完成的请求数:QPS,这是一个平均值,等于Complete requests/Time taken for tests
Time per request: 8626.891 [ms] (mean) #从用户角度看,完成一个请求所需要的时间(因用户数量不止一个,服务器完成100个请求,平均每个用户才接收到一个完整的返回,所以该值是下一项数值的100倍
Time per request: 86.269 [ms] (mean, across all concurrent requests) #服务器完成一个请求的时间。
Transfer rate: 17.89 [Kbytes/sec] received #网络传输速度。对于大文件的请求测试,这个值很容易成为系统瓶颈所在。要确定该值是不是瓶颈,需要了解客户端和被测服务器之间的网络情况,包括网络带宽和网卡速度等信息
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 54 73.4 45 1153
Processing: 42 325 2816.8 52 60091
Waiting: 41 186 320.7 51 2296
Total: 81 379 2815.8 101 60091
# 这几行组成的表格主要是针对响应时间也就是第一个Time per request进行细分和统计。一个请求的响应时间可以分成网络链接(Connect),系统处理(Processing)和等待(Waiting)三个部分。表中min表示最小值; mean表示平均值;[+/-sd]表示标准差(Standard Deviation) ,也称均方差(mean square error),这个概念在中学的数学课上学过,表示数据的离散程度,数值越大表示数据越分散,系统响应时间越不稳定。 median表示中位数; max当然就是表示最大值了。
#需要注意的是表中的Total并不等于前三行数据相加,因为前三行的数据并不是在同一个请求中采集到的,可能某个请求的网络延迟最短,但是系统处理时间又是最长的呢。所以Total是从整个请求所需要的时间的角度来统计的。这里可以看到最慢的一个请求花费了60091ms,这个数据可以在下面的表中得到验证。
Percentage of the requests served within a certain time (ms)
50% 101
66% 118
75% 154
80% 217
90% 632
95% 1064
98% 1606
99% 1611
100% 60091 (longest request)
#这个表第一行表示有50%的请求都是在101ms内完成的
#以此类推,90%的请求是小于等于632ms的。刚才我们看到响应时间最长的那个请求是60091ms,那么显然所有请求(100%)的时间都是小于等于60091毫秒的,也就是表中最后一行的数据肯定是时间最长的那个请求(longest request)。

参考文档

  1. Apache ab性能测试结果分析
  2. ab测试工具参数详解