ab压力测试

2021-04-27  本文已影响0人  朝朝朝朝朝落
Linux/Mac:
1、yum -y install httpd-tools
     查看信息:ab -V
2, Windows:http://www.apachehaus.com/cgi-bin/download.plx
下载后解压,并追加PATH环境变量,如";E:\software\Apache24\bin"

参数说明

-n:执行的请求个数,默认时执行一个请求
-c:一次产生的请求个数,即并发个数
-p:模拟post请求,文件格式为gid=2&status=1,配合-T使用
-T:post数据所使用的Content-Type头信息,如果-T 'application/x-www-form-urlencoded'

1.模拟get请求

直接在url后面带参数即可

ab -c 10 -n 10 http://www.test.api.com/?gid=2

2.模拟post请求

在当前目录下创建一个文件post_data.txt
编辑文件post_data.txt写入

kuid=10022754530800&xxx=xxx

相当于post传递cid,status参数

ab -n 100 -c 10 -p 'post_data.txt' -T'application/x-www-form-urlencoded' 'https://xxx.xxx.com/api_service/v1.0/jingdong_repertory'

返回信息

Server Software:        Apache-Coyote/1.1    ##apache版本 
Server Hostname:        127.0.0.1   ##请求的机子 
Server Port:            8080 ##请求端口

Document Path:          /
Document Length:        1825 bytes  ##页面长度

Concurrency Level:      100  ##并发数 
Time taken for tests:   0.273 seconds  ##共使用了多少时间 
Complete requests:      1000   ##请求数 
Failed requests:        0   ##失败请求 
Total transferred:      275000 bytes  ##总共传输字节数,包含http的头信息等 
HTML transferred:       25000 bytes  ##html字节数,实际的页面传递字节数 
Requests per second:    3661.60 [#/sec] (mean)  ##每秒多少请求,这个是非常重要的参数数值,服务器的吞吐量 
Time per request:       27.310 [ms] (mean)  ##用户平均请求等待时间 
Time per request:       0.273 [ms] (mean, across all concurrent requests)  #服务器平均处理时间
Transfer rate:          983.34 [Kbytes/sec] received  ##每秒获取的数据长度

Connection Times (ms) 
              min  mean[+/-sd] median   max 
Connect:        0    1   2.3      0      16 
Processing:     6   25   3.2     25      32 
Waiting:        5   24   3.2     25      32 
Total:          6   25   4.0     25      48

Percentage of the requests served within a certain time (ms) 
  50%     25  ## 50%的请求在25ms内返回 
  66%     26  ## 60%的请求在26ms内返回 
  75%     26 
  80%     26 
  90%     27 
  95%     31 
  98%     38 
  99%     43 
100%     48 (longest request)

更多参数

更多参数
-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 设置<table>属性的字符串。
-X 对请求使用代理服务器。
-y 设置<tr>属性的字符串。
-z 设置<td>属性的字符串。
-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标记可以抑制这些信息。

部分copy https://blog.51cto.com/u_12384628/2507321

上一篇下一篇

猜你喜欢

热点阅读