AB工具的基本使用
一、语法格式
格式:abs.exe [options] [http[s]://]hostname[:port]/path
详细语法格式:abs [ -A auth-username:password ] [-u][ -c concurrency ] [ -C cookie-name=value ] [ -d ] [ -e csv-file ] [ -g gnuplot-file ] [ -h ] [ -H custom-header ] [ -i ] [ -k ] [ -n requests ] [ -p POST-file ] [ -P proxy-auth-username:password ] [ -q ] [ -s ] [ -S ] [ -t timelimit ] [ -T content-type ] [ -v verbosity] [ -V ] [ -w ] [ -x <table>-attributes ] [ -X proxy[:port] ] [ -y <tr>-attributes ] [ -z <td>-attributes ] [http://]hostname[:port]/path
参数解释:
-A auth-username:password:向服务器提供基本认证信息。用户名和密码之间由一个":"隔开,并将被以base64编码形式发送。无论服务器是否需要(即是否发送了401认证需求代码),此字符串都会被发送;
-c concurrency:一次产生的请求数或并发数,默认是一次一个;
-C cookie-name=value:对请求附加一个"Cookie:"头行。其典型形式是 name=value 的一个参数对。此参数可以重复,用逗号分割;提示:可以借助session实现原理传递 JSESSIONID参数, 实现保持会话的功能,如-C ” c1=1234,c2=2,c3=3, JSESSIONID=FF056CD16DA9D71CB131C1D56F0319F8″ ;
-d:不显示百分比(为以前的版本提供支持);
-e csv-file:产生一个逗号分隔(CSV)文件,其中包含了处理每个相应百分比请求(从1%到100%)所需要的相应百分比时间(以微秒为单位)。由于这种格式已经"二进制化",所以比"gnuplot"格式更有用;
-g gnuplot-file:把所有测试结果写入一个"gnuplot"或者TSV(以Tab分隔)文件。此文件可以方便地导入到 Gnuplot, IDL, Mathematica, Excel中。其中的第一行为标题;
-h:显示帮助信息;
-H custom-header :对请求附加额外的头信息。此参数的典型形式是一个有效的头信息行,其中包含了以冒号分隔的字段和值(如:"Accept-Encoding: zip/zop;8bit");
-i:执行HEAD请求,而不是GET;
-k:启用KeepAlive功能,即在一个HTTP会话中执行多个请求。默认不启用KeepAlive功能;
-n requests:在测试会话中所执行的总请求个数。默认仅执行一个请求;
-p POST-file:发送POST请求时需要上传的文件,此外还必须设置 -T参数。文件格式如“p1=1&p2=2”.使用方法是 -p 111.txt;
-P proxy-auth-username:password:对一个中转代理提供基本认证信息。用户名和密码由一个":"隔开,并将被以base64编码形式发送。无论服务器是否需要(即是否发送了407代理认证需求代码),此字符串都会被发送;
-q:如果处理的请求数大于150,ab每处理大约10%或者100个请求时,会在stderr输出一个进度计数。此 -q 标记可以屏蔽这些信息;
-s:用于编译中(ab -h 会告诉你)使用了SSL的受保护的https ,而不是http协议的时候。此功能是实验性的,最好不要用;
-S:不显示中值和标准偏差值,而且在均值和中值为标准偏差值的1到2倍时,也不显示警告或出错信息。默认时,会显示最小值/均值/最大值等数值。(为以前的版本提供支持);
-t timelimit :即timelimit,等待响应的最大时间(单位:秒)。内部隐含值是"-n 50000"。它可以使对服务器的测试限制在一个固定的总时间以内。默认时,没有时间限制;
-T content-type:POST数据时所使用的"Content-type"头信息,如 -T “application/x-www-form-urlencoded” ;
-v verbosity:设置显示信息的详细程度,4或更大值会显示头信息,3或更大值可以显示响应代码(404,200等),2或更大值可以显示警告和其他信息;
-V :显示版本号并退出;
-w :以HTML表格形式输出结果。默认时,它是白色背景的两列宽度的一张表;
-x <table>-attributes:设置<table>属性的字符串。此属性被填入<table 这里 >;
-X proxy[:port] :对请求使用代理服务器;
-y <tr>-attributes:设置<tr>属性的字符串;
-z <td>-attributes:设置<td>属性的字符串;
-u:发送PUT请求时需要上传的文件,此外还必须设置 -T参数
二、基本使用
ab的参数有很多,大部分时候我们使用-n和-c参数就可以进行压测了;(-n:发送请求的总数;-c:并发数;-C:如果接口需要传递cookie可以用key=value的模式进行传递)
举例:abs.exe -n 10 -c 1 https://www.baidu.com/
举例:增加cookie值:abs.exe -n 10 -c 1 -C key = value https://www.baidu.com/
这个表示采用一个并发发送10次数据请求到百度;如下图:
数据说明:
第一部分:
Server Software: BWS/1.1
Server Hostname: www.baidu.com //访问的地址
Server Port: 443 //端口号
SSL/TLS Protocol: TLSv1.2,ECDHE-RSA-AES128-GCM-SHA256,2048,128
Server Temp Key: ECDH P-256 256 bits
TLS Server Name: www.baidu.com
第二部分:
Document Path: / //测试的页面文档位置
Document Length: 227 bytes //文档大小
第三部分:
Concurrency Level: 1 //请求并发数据
Time taken for tests: 7.446 seconds //完成所有请求所消耗的时间
Complete requests: 10 //完成请求的总量
Failed requests: 0 //失败的请求数
Total transferred: 11110 bytes //整个过程中总的网络传输量
HTML transferred: 2270 bytes //整个过程中HTML内容传输量
Requests per second: 1.34 [#/sec] (mean) //主要的指标一:相当于LR每秒处理的事务数(tps/qps),后面的mean标识这是一个平均值
Time per request: 744.608 [ms] (mean) //主要指标二:相当于LR中的平均事务响应时间,后面mean表示这是一个评均值
Time per request: 744.608 [ms] (mean, across all concurrent requests) //这个是每个连接请求服务器平均处理时间
Transfer rate: 1.46 [Kbytes/sec] received //平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题
第四部分:
//网络上消耗的时间的分解
Connection Times (ms)
min mean[+/-sd] median max
Connect: 45 451 1104.4 68 3584
Processing: 14 292 665.8 20 2146
Waiting: 14 80 138.9 20 427
Total: 59 744 1761.8 97 5731
//整个场景中所有请求的响应情况。在场景中每个请求都有一个响应时间,其中50%的用户响应时间小于97 毫秒,60% 的用户响应时间小于175 毫秒,最大的响应时间小于5731 毫秒。由于对于并发请求,cpu实际上并不是同时处理的,而是按照每个请求获得的时间片逐个轮转处理的,所以基本上第一个Time per request时间约等于第二个Time per request时间乘以并发请求数
Percentage of the requests served within a certain time (ms)
50% 97
66% 175
75% 488
80% 563
90% 5731
95% 5731
98% 5731
99% 5731
100% 5731 (longest request)
附:参考连接
https://www.cnblogs.com/funsion/p/4017911.html
https://blog.csdn.net/xiaojin21cen/article/details/118188707
https://blog.csdn.net/qq_36763236/article/details/108434088?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-108434088-blog-50853393.pc_relevant_multi_platform_whitelistv3&spm=1001.2101.3001.4242.1&utm_relevant_index=2