网络压力测试工具(ab压力测试工具)全程干货
98% 12 #98%用户请求在12ms内返回 100% 404 使用注意1、MAC中应该是自带了
在学习ab工具之前,我们需了解几个关于压力测试的概念吞吐率(Requests per second)概念:服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请求数某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。
计算公式:总请求数 / 处理完成这些请求数所花费的时间,即 Request per second = Complete requests / Time taken for tests并发连接数(The number of concurrent connections)
概念:某个时刻服务器所接受的请求数目,简单的讲,就是一个会话并发用户数(The number of concurrent users,Concurrency Level)概念:要注意区分这个概念和并发连接数之间的区别,一个用户可能同时会产生多个会话,也即连接数。
用户平均请求等待时间(Time per request)计算公式:处理完成所有请求数所花费的时间/(总请求数 / 并发用户数),即 Time per request = Time taken for tests /( Complete requests / Concurrency Level)
服务器平均请求等待时间(Time per request: across all concurrent requests)计算公式:处理完成所有请求数所花费的时间 / 总请求数,即 Time taken for / testsComplete requests。
可以看到,它是吞吐率的倒数,同时,它也=用户平均请求等待时间/并发用户数,即 Time per request / Concurrency Levelab工具简介ab全称为:apache bench在官网上的解释如下:
ab是Apache超文本传输协议(HTTP)的性能测试工具其设计意图是描绘当前所安装的Apache的执行性能,主要是显示你安装的Apache每秒可以处理多少个请求其他网站解释:ab是apache自带的压力测试工具。
ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试比如nginx、tomcat、IIS等下载ab工具Window官方下载地址:https://www.apachehaus.com/cgi-bin/download.plx
下载完成后解压,修改解压根目录下的conf/httpd.conf文件的端口配置,默认是80端口,应该是被占用了,无法安装,可以自行修改为其他,我在这里修改为8088端口,然后输入命令安装:httpd -k install
启动ab工具如果你需要在命令行的任意路径下可以输入ab测试,可以把bin目录路径加到环境变量的path中去,我是在bin目录下打开命令行的开始测试输入命令ab -n 100 -c 10 http://test.com/ 其中-n表示请求数,-c表示并发数
其余命令请参见 http://apache.jz123.cn/programs/ab.htmlab参数说明有关 ab 命令的使用,我们可以通过帮助命令进行查看如下:[root@localhost bin]。
# ab --help ab: wrong number of arguments Usage: ab [options] [http[s]://]hostname[:port]/path Options are: -n requests Number of requests to perform -c concurrency Number of multiple requests to make at a time -t timelimit Seconds to max. to spend on benchmarking This implies -n 50000 -s timeout Seconds to max. wait for each response Default is 30 seconds -b windowsize Size of TCP send/receive buffer, in bytes -B address Address to bind to when making outgoing connections -p postfile File containing data to POST. Remember also to
set -T -u putfile File containing datato PUT. Remember also toset -T -T content-typeContent
-type header tousefor POST/PUT data, eg. application/x-www-form-urlencodedDefault
istext/plain -v verbosity How much troubleshooting info to print -w Print out
results in HTML tables -i UseHEAD instead ofGET -x attributesStringtoinsertastable
attributes -y attributesStringtoinsertas tr attributes -z attributesStringtoinsertas td or th
attributes -C attributeAdd cookie, eg. Apache=1234. (repeatable) -H attributeAdd Arbitrary header line, eg.
Accept-Encoding: gzip Inserted afterallnormal header lines. (repeatable) -A attribute
Add Basic WWW Authentication, the attributesare a colon separated username and password. -P attribute
Add Basic Proxy Authentication, the attributesare a colon separated username and password. -X proxy:port Proxyserver
and port numbertouse -V Print versionnumberandexit -k UseHTTP KeepAlive feature -d
Donotshow percentiles served table. -S Donotshow confidence estimators and warnings. -q
Donotshow progress when doing more than150 requests -g filename Output collected datato gnuplot
format file. -e filename Output CSV filewith percentages served -r Dont exit on socket receive errors. -h Display usage information (this message) -Z ciphersuite Specify SSL/TLS cipher suite (See openssl ciphers) -f protocol Specify SSL/TLS protocol (SSL3, TLS1, TLS1.1, TLS1.2 or ALL)
下面我们对这些参数,进行相关说明如下:参数说明-n在测试会话中所执行的请求个数默认时,仅执行一个请求-c一次产生的请求个数默认是一次一个-t测试所进行的最大秒数其内部隐含值是 -n 50000,它可以使对服务器的测试限制在一个固定的总时间以内。
默认时,没有时间限制-p包含了需要 POST 的数据的文件-P对一个中转代理提供 BASIC 认证信任用户名和密码由一个:隔开,并以 base64 编码形式发送无论服务器是否需要(即, 是否发送了 401 认证需求代码),此字符串都会被发送。
-TPOST数据所使用的 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 中其中的第一行为标题-k启用 HTTP KeepAlive 功能,即在一个 HTTP 会话中执行多个请求。
默认时,不启用 KeepAlive 功能-q如果处理的请求数大于 150,ab 每处理大约 10% 或者 100 个请求时,会在 stderr 输出一个进度计数此 -q 标记可以抑制这些信息属性的字符串。
测试结果分析上面的命令运行完毕后就出来测试报告了
这段展示的是web服务器的信息,可以看到服务器采用的是nginx,域名是wan.bigertech.com,端口是80
这段是关于请求的文档的相关信息,所在位置“/”,文档的大小为338436 bytes(此为http响应的正文长度)
这段展示了压力测试的几个重要指标
Concurrency Level: 100 ==>并发请求数Time taken for tests: 50.872 seconds ==>整个测试持续的时间Complete requests: 1000 ==>完成的请求数
Failed requests: 0 ==>失败的请求数Total transferred: 13701482 bytes ==>整个场景中的网络传输量HTML transferred: 13197000 bytes ==>整个场景中的HTML内容传输量
Requests per second: 19.66 [#/sec] (mean) ==>吞吐率,大家最关心的指标之一,相当于 LR 中的每秒事务数,后面括号中的 mean 表示这是一个平均值Time per request: 5087.180 [ms] (mean) ==>用户平均请求等待时间,
大家最关心的指标之二,相当于 LR 中的平均事务响应时间,后面括号中的 mean 表示这是一个平均值Time per request: 50.872 [ms] (mean, across all concurrent requests) ==>服务器平均请求处理时间,
大家最关心的指标之三Transfer rate: 263.02 [Kbytes/sec] received ==>平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题这段表示网络上消耗的时间的分解
这段是每个请求处理时间的分布情况,50%的处理时间在4930ms内,66%的处理时间在5008ms内…,重要的是看**90%**的处理时间。
关于登录的问题有时候进行压力测试需要用户登录,怎么办? 请参考以下步骤:先用账户和密码登录后,用开发者工具找到标识这个会话的Cookie值(Session ID)记下来如果只用到一个Cookie,那么只需键入命令: ab -n 100 -C key=value http://test.com/ 如果需要多个Cookie,就直接设Header: ab -n 100 -H “Cookie: Key1=Value1; Key2=Value2” http://test.com/
总结总的来说ab工具ab小巧简单,上手学习较快,可以提供需要的基本性能指标,但是没有图形化结果,不能监控因此ab工具可以用作临时紧急任务和简单测试同类型的压力测试工具还有:webbench、siege、http_load等。
开始测试如果你需要在命令行的任意路径下可以输入ab测试,可以把bin目录路径加到环境变量的path中去我是在bin目录下打开命令行的 注意,下面的是错误的,因为需要在域名后加上/pathab -n 100
-c10 http://www.baidu.com报错信息如下:ab: invalid URL Usage: ab [options] [http://]hostname[:port]/path必须要接有path 所以我换一下测试命令:
ab -n 100 -c10 http://www.baidu.com/s-n 表示请求数,-c 表示并发数. s为path,表示指定测试地址,不指定可能会报”ab: invalid url” 错误. 另外还有-t 表示多少s内并发和请求
测试出来的数据如下:D:\apacheab\Apache24\bin>ab-n100-c10http://www.baidu.com/sThisisApacheBench,Version2.3<$Revision:
1807734$>Copyright1996AdamTwiss,ZeusTechnologyLtd,http://www.zeustech.net/LicensedtoTheApacheSoftware
Foundation,http://www.apache.org/Benchmarkingwww.baidu.com(bepatient).....doneServer Software:BWS/1.1
##服务器软件和版本Server Hostname:www.baidu.com##请求的地址/域名Server Port:80##端口Document Path:/s##请求的路径Document Length:
112435bytes##页面数据/返回的数据量Concurrency Level:10##并发数Time taken for tests:4.764seconds##共使用了多少时间 Complete requests:
100##请求数 Failed requests:99##失败请求 百度为什么失败这么多,应该是百度做了防范 (Connect:0,Receive:0,Length:99,Exceptions:0)
Total transferred:11342771bytes##总共传输字节数,包含http的头信息等 HTML transferred:11247622bytes##html字节数,实际的页面传递字节数
Requests per second:20.99[#/sec](mean)##每秒多少请求,这个是非常重要的参数数值,服务器的吞吐量 Time per request:476.427[ms](mean)
##用户平均请求等待时间 Time per request:47.643[ms](mean,acrossallconcurrentrequests)##服务器平均处理时间,也就是服务器吞吐量的倒数 Transfer rate:
2325.00[Kbytes/sec]received##每秒获取的数据长度ConnectionTimes(ms)minmean[+/-sd]medianmaxConnect:224112.43982##连接的最小时间,平均值,中值,最大值
Processing:113386211.13301246##处理时间Waiting:258043.973266##等待时间Total:152427210.13731283##合计时间Percentage
oftherequestsservedwithinacertaintime(ms)50%373## 50%的请求在373ms内返回 66%400## 60%的请求在400ms内返回 75%42680%465
90%76195%93098%119299%1283100%1283(longestrequest)因为ab工具消耗小,所以有些人也用来进行ddos攻击,算一种ddos攻击工具[Linux]ApacheBench(ab)压力测试工具
AB的简介ab是apachebench命令的缩写ab是apache自带的压力测试工具ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试比如nginx、tomcat、IIS等。
ab的原理ab的原理:ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问它的测试目标是基于URL的,因此,它既可以用来测试apache的负载压力,也可以测试nginx、lighthttp、tomcat、IIS等其它Web服务器的压力。
ab命令对发出负载的计算机要求很低,它既不会占用很高CPU,也不会占用很多内存但却会给目标服务器造成巨大的负载,其原理类似CC攻击自己测试使用也需要注意,否则一次上太多的负载可能造成目标服务器资源耗完,严重时甚至导致死机。
ab的安装安装命令:yum -y install httpd-tools 查看版本命令:ab -V 查看参数说明:ab --helpab的使用 常用方式:ab -c 500 -n 5000 http://localhost/
[root@H__D/]#ab-c500-n5000http://localhost/ThisisApacheBench,Version2.3Copyright1996
AdamTwiss,ZeusTechnologyLtd,http://www.zeustech.net/LicensedtoTheApacheSoftwareFoundation,http://www.apache.org/
Benchmarkinglocalhost(bepatient)Completed500requestsCompleted1000requestsCompleted1500requestsCompleted
2000requestsCompleted2500requestsCompleted3000requestsCompleted3500requestsCompleted4000requestsCompleted
4500requestsCompleted5000requestsFinished5000requestsServer Software:nginx/1.15.3#测试服务器的名字Server Hostname:
localhost#请求的URL主机名Server Port:80#请求端口Document Path:/#请求路径Document Length:613bytes#HTTP响应数据的正文长度Concurrency Level:
500#并发用户数,这是我们设置的参数之一Time taken for tests:0.407seconds#所有这些请求被处理完成所花费的总时间 单位秒Complete requests:5000#总请求数量,这是我们设置的参数之一
Failed requests:0#表示失败的请求数量Write errors:0Total transferred:4230000bytes#所有请求的响应数据长度总和包括每个HTTP响应数据的头信息和正文数据的长度。
HTML transferred:3065000bytes#所有请求的响应数据中正文数据的总和,也就是减去了Total transferred中HTTP响应数据中的头信息的长度Requests per second:
12284.44[#/sec](mean)#吞吐量,计算公式:Complete requests/Time taken for tests 总请求数/处理完成这些请求数所花费的时间Time per request:
40.702[ms](mean)#用户平均请求等待时间,计算公式:Time token for tests/(Complete requests/Concurrency Level)处理完成所有请求数所花费的时间/(总请求数/并发用户数) 。
Time per request:0.081[ms](mean,acrossallconcurrentrequests)#服务器平均请求等待时间,计算公式:Time taken for tests/Complete requests,正好是吞吐率的倒数。
也可以这么统计:Time per request/Concurrency LevelTransfer rate:10149.06[Kbytes/sec]received#表示这些请求在单位时间内从服务器获取的数据长度,计算公式:Total trnasferred/ Time taken for tests,这个统计很好的说明服务器的处理能力达到极限时,其出口宽带的需求量。
ConnectionTimes(ms)minmean[+/-sd]medianmaxConnect:020.816Processing:357.95399Waiting:047.94399Total:4
78.07404WARNING:ThemedianandmeanfortheinitialconnectiontimearenotwithinanormaldeviationTheseresultsare
probablynotthatreliable.Percentageoftherequestsservedwithinacertaintime(ms)50%7#50%用户请求在7ms内返回66%7#60%用户请求在7ms内返回
75%780%790%795%798%12#98%用户请求在12ms内返回99%12100%404(longestrequest)使用注意1、MAC中应该是自带了Apache2、在使用ab命令时,并发了过高会出现错误:Too many open files,由于系统打开文件数量限制了。
查看系统打开文件数量,命令:ulimit -a
修改打开文件数量,修改成1024,命令:ulimit -n 1024查看修改后情况,命令:ulimit -n
参考:https://www.cnblogs.com/behindman/p/8700611.html https://blog.csdn.net/qq_26525215/article/details/79182674
https://www.cnblogs.com/h–d/p/9903959.html https://www.jianshu.com/p/d222b7c80e97
- 标签:
- 编辑:李松一
- 相关文章
-
mac office 2011 破解版(mac版本office破解版下载)全程干货
苹果预计将在秋季发布会之后正式推送macOS10.13,但是这个版本下,OfficeforMac2011的兼容存在问题,已经无法继续使用了。…
-
浩辰cad2012激活码(cad2012序列号和密钥激活码)越早知道越好
除了大家都熟悉的DWG图纸文件外,AutoCAD中还用到各式各样的文件,例如样板文件、。了解CAD一些常用的文件的扩展名和作用,对大家深入…
- windows mobile 7(windows mobile 7.0下载)干货满满
- 检测代理服务器设置(流量走代理服务器是不是可以防检测)奔走相告
- windows 7破解(windows7破解版手机下载)怎么可以错过
- 多邮箱同时管理(公司的邮箱一般谁在管理)全程干货
- 系统维护盘(资金盘系统维护)这都可以?