1.下载测试工具

1
[root@nginx-test ~]# yum install httpd-tools

2.查看测试工具版本号

1
2
3
4
[root@nginx-test ~]# 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/

3.压力接口测试

1
2
3
[root@nginx-test ~]# ab -n 2000 -c 2  https://nues.cn/
-n 总的请求数
-c 并发数

4.相关参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
-n在测试会话中所执行的请求个数。默认时,仅执行一个请求。
-c一次产生的请求个数。默认是一次一个。
-t测试所进行的最大秒数。其内部隐含值是-n 50000,它可以使对服务器的测试限制在一个固定的总时间以内。默认时,没有时间限制。
-p包含了需要POST的数据的文件。
-P对一个中转代理提供BASIC认证信任。用户名和密码由一个:隔开,并以base64编码形式发送。无论服务器是否需要(即, 是否发送了401认证需求代码),此字符串都会被发送。
-T POST数据所使用的Content-type头信息。
-v设置显示信息的详细程度-4或更大值会显示头信息,3或更大值可以显示响应代码(404,200等),2或更大值可以显示警告和其他信息。
-V显示版本号并退出。
-w以HTML表的格式输出结果。默认时,它是白色背景的两列宽度的一张表。
-i执行HEAD请求,而不是GET。
-x设置属性的字符串。
-X对请求使用代理服务器。
-y设置属性的字符串。
-z设置属性的字符串。
-C对请求附加一个 Cookie: 行。其典型形式是 name=value 的一个参数对,此参数可以重复。
-H对请求附加额外的头信息。此参数的典型形式是一个有效的头信息行,其中包含了以冒号分隔的字段和值的对(如,“Accept-Encoding:zip/zop;8bit”)。
-A对服务器提供BASIC认证信任。用户名和密码由一个:隔开,并以base64编码形式发送。无论服务器是否需要(即,是否发送了401认证需求代码),此字符串都会被发送。
-h显示使用方法。
-d不显示”percentage served within XX [ms] table”的消息(为以前的版本提供支持)。
-e产生一个以逗号分隔的(CSV)文件,其中包含了处理每个相应百分比的请求所需要(从1%到100%)的相应百分比的(以微妙为单位)时间。由于这种格式已经“二进制化”,所以比’gnuplot’格式更有用。
-g把所有测试结果写入一个’gnuplot’或者TSV(以Tab分隔的)文件。此文件可以方便地导入到Gnuplot,IDL,Mathematica,Igor甚至Excel中。其中的第一行为标题。
-i执行HEAD请求,而不是GET。
-k启用 HTTP KeepAlive 功能,即在一个HTTP会话中执行多个请求。默认时,不启用 KeepAlive 功能。
-q如果处理的请求数大于150,ab每处理大约10%或者100个请求时,会在stderr输出一个进度计数。此-q标记可以抑制这些信息。

接口测试返回信息详解

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
46
47
48
49
50
51
52
53
54
55
56
57
58
[root@nginx-test ~]# ab -n 2000 -c 2  https://nues.cn/
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 nues.cn (be patient)
Completed 200 requests #已完成200个请求
Completed 400 requests ...
Completed 600 requests
Completed 800 requests
Completed 1000 requests
Completed 1200 requests
Completed 1400 requests
Completed 1600 requests
Completed 1800 requests
Completed 2000 requests
Finished 2000 requests #已完成2000个请求


Server Software: nginx
Server Hostname: nues.cn
Server Port: 443 #监听端口
SSL/TLS Protocol: TLSv1.2,ECDHE-RSA-AES128-GCM-SHA256,2048,128

Document Path: /
Document Length: 81168 bytes #提供测试URL大小

Concurrency Level: 2 #并发数
Time taken for tests: 1506.503 seconds #压力测试消耗的总时间
Complete requests: 2000 #请求总次数
Failed requests: 1991 #失败连接数
(Connect: 0, Receive: 0, Length: 1991, Exceptions: 0)
Write errors: 0
Total transferred: 162758648 bytes #传输数据总量
HTML transferred: 162116648 bytes #HTML文档的总数据量
Requests per second: 1.33 [#/sec] (mean) #平均每秒的请求数(非常重要的参数,是服务器的吞吐量)
Time per request: 1506.503 [ms] (mean) #所有并发用户(这里是500)都请求一次的平均时间
Time per request: 753.252 [ms] (mean, across all concurrent requests)
Transfer rate: 105.51 [Kbytes/sec] received #每秒获取的数据长度 (传输速率,单位:KB/s)


Connection Times (ms)
min mean[+/-sd] median max
Connect: 107 251 288.5 166 2628
Processing: 448 1254 530.4 1168 7129
Waiting: 272 489 226.4 429 4253
Total: 558 1506 663.1 1360 7878

Percentage of the requests served within a certain time (ms)
50% 1360 #50%的请求在1360ms内返回
66% 1579 ...
75% 1774
80% 1946
90% 2331
95% 2717
98% 3343
99% 3839
100% 7878 (longest request)