超实用压力测试工具-ab工具

2023-04-20 13:57 67次浏览 财经

下载

apache下载

语法及参数

Usage: ab [options] [http[s]://]hostname[:port]/path
用法:ab [选项] 地址

选项:
Options are:
-n requests #执行的请求数,即一共发起多少请求。
-c concurrency #请求并发数。
-t timelimit #测试所进行的最大秒数。其内部隐含值是-n 50000,它可以使对服务器的测试限制在一个固定的总时间以内。默认时,没有时间限制。
-s timeout #指定每个请求的超时时间,默认是30秒。
-b windowsize #指定tcp窗口的大小,单位是字节。
-B address #指定在发起连接时绑定的ip地址是什么。
-p postfile #指定要POST的文件,同时要设置-T参数。
-u putfile #指定要PUT的文件,同时要设置-T参数。
-T content-type #指定使用POST或PUT上传文本时的文本类型,默认是'text/plain'。
-v verbosity #设置详细模式等级。
-w #将结果输出到html的表中。
-i #使用HEAD方式代替GET发起请求。
-y attributes #以表格方式输出时,设置html表格tr属性。
-z attributes #以表格方式输出时,设置html表格th或td属性。
-C attribute #添加cookie,比如'Apache=1234'。(可重复)
-H attribute #为请求追加一个额外的头部,比如'Accept-Encoding: gzip'。(可重复)
-A attribute #对服务器提供BASIC认证信任。用户名和密码由一个:隔开,并以base64编码形式发送。无论服务器是否需要(即,是否发送了401认证需求代码),此字符串都会被发送。
-P attribute #对一个中转代理提供BASIC认证信任。用户名和密码由一个:隔开,并以base64编码形式发送。无论服务器是否需要(即, 是否发送了401认证需求代码),此字符串都会被发送。
-X proxy:port #指定代理服务器的IP和端口。
-V #打印版本信息。
-k #启用HTTP KeepAlive功能,即在一个HTTP会话中执行多个请求。默认时,不启用KeepAlive功能。
-d #不显示"percentage served within XX [ms] table"的消息(为以前的版本提供支持)。
-q #如果处理的请求数大于150,ab每处理大约10%或者100个请求时,会在stderr输出一个进度计数。此-q标记可以抑制这些信息。
-g filename #把所有测试结果写入一个'gnuplot'或者TSV(以Tab分隔的)文件。此文件可以方便地导入到Gnuplot,IDL,Mathematica,Igor甚至Excel中。其中的第一行为标题。
-e filename #产生一个以逗号分隔的(CSV)文件,其中包含了处理每个相应百分比的请求所需要(从1%到100%)的相应百分比的(以微妙为单位)时间。由于这种格式已经“二进制化”,所以比'gnuplot'格式更有用。
-r #当收到错误时不要退出。
-h #输出帮助信息
-Z ciphersuite 指定SSL/TLS密码套件
-f protocol 指定SSL/TLS协议(SSL3, TLS1, TLS1.1, TLS1.2 or ALL)

常用命令

  1. 表示一次发送1000请求,并发请求100个

$ ab -n 1000 -c 100 http://localhost:8030/buy/goods

This is ApacheBench, Version 2.3 <$Revision: 1874286 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd,
Licensed to The Apache Software Foundation,

Benchmarking localhost (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests

Server Software:
Server Hostname: localhost
Server Port: 8030

Document Path: /buy/goods //表示URL中根绝对路径
Document Length: 23 bytes //表示http响应数据的正文长度

Concurrency Level: 100 //表示并发请求数
Time taken for tests: 0.557 seconds //表示整个测试持续的时间
Complete requests: 1000 //完成的请求数
Failed requests: 0
Total transferred: 140000 bytes //整个场景中网络的传输量
HTML transferred: 23000 bytes //整个场景中HTML内容传输量

//吞吐率,指的是某个并发用户数下单位时间内处理的请求数,后面括号中的 mean 表示这是一个平均值
Requests per second: 1796.91 [#/sec] (mean)
//用户平均请求等待时间,大家最关心的指标之二,相当于 LR 中的平均事务响应时间,后面括号中的 mean 表示这是一个平均值
Time per request: 55.651 [ms] (mean)
//服务器平均请求处理时间,大家最关心的指标之三
Time per request: 0.557 [ms] (mean, across all concurrent requests)
//平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题
Transfer rate: 245.67 [Kbytes/sec] received

//这段表示网络上消耗的时间的分解
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.2 0 1
Processing: 7 53 12.1 50 108
Waiting: 3 52 12.1 50 108
Total: 7 53 12.1 50 108

//这段是每个请求处理时间的分布情况,50%的处理时间在50ms内,66%的处理时间在53ms内...,重要的是看90%的处理时间。
Percentage of the requests served within a certain time (ms)
50% 50
66% 53
75% 54
80% 56
90% 62
95% 82
98% 95
99% 102
100% 108 (longest request)

Requests per second

Requests per second: 1796.91 [#/sec] (mean)

吞吐率:指的是某个并发用户数下单位时间内处理的请求数,后面括号中的 mean 表示这是一个平均值 计算方式:Complete requests / Time taken for tests
具体计算:1000 [#/sec]

Time per request

Time per request: 55.651 [ms] (mean)

用户平均请求等待时间:相当于 LR 中的平均事务响应时间,后面括号中的 mean 表示这是一个平均值 计算方式:Time taken for tests / (Complete requests /Concurrency Level) 具体计算:0.557*1000 / (1000/1000) [ms]

Time per request (mean, across all concurrent requests)

Time per request: 0.557 [ms] (mean, across all concurrent requests)

服务器平均请求处理时间: 计算方式:Time taken for tests / Complete requests 吞吐量的倒数 具体计算:0.557*1000 /1000 [ms]

Transfer rate

Transfer rate: 245.67 [Kbytes/sec] received

平均每秒网络上的流量:可以帮助排除是否存在网络流量过大导致响应时间延长的问题 计算方式:Total transferred / Time taken for tests
具体计算:140000 / 1024 [Kbytes/sec]

相关推荐