【转】开源性能测试工具 - Apache ab 介绍
2015-12-15 14:06
585 查看
版权声明:本文可以被转载,但是在未经本人许可前,不得用于任何商业用途或其他以盈利为目的的用途。本人保留对本文的一切权利。如需转载,请在转载是保留此版权声明,并保证本文的完整性。也请转贴者理解创作的辛劳,尊重作者的劳动成果。
作者:陈雷(Jackei)
邮箱:jackeichan@gmail.com
Blog:http://jackei.cnblogs.com
引子
按照原定计划,今天开始研究JMeter,一天的时间看完了大半的UserManual,发现原来只要沉住气,学习效率还是蛮高的,而且大堆的英文文档也没有那么可怕^_^
本来想顺便把文档翻译一下,不过后来想了想,看懂是一回事,全部翻译出来又是另外一回事了,工作量太大,而且这也不是我一开始要研究JMeter的本意。不如大家有兴趣一起研究的遇到问题再一起讨论吧。
开源工具通常都是为了某个特定的目的而开发出来的,所以如果想找到一个开源的性能测试工具去与LoadRunner或者QALoad之类去比较,实在有些勉强。但是开源工具也有它自己的优势:小巧、轻便,在自己擅长的领域可以提供优秀的解决方案。所以,我们可以考虑准备一个自己的“开源测试工具箱”,平时利用空闲时间了解各种工具所适用的环境和目的,知识慢慢积累下来以后,就可以在遇到问题时顺手拈来,轻松化解^_^
另外,如果8月份和9月份的空闲时间足够多,我想我会写一个系列文章来讲述在实际的开发和测试过程中引入开源性能测试工具的情况。如果有朋友感兴趣,希望大家可以一起研究和讨论。
简介
ab的全称是ApacheBench,是Apache附带的一个小工具,专门用于HTTPServer的benchmarktesting,可以同时模拟多个并发请求。前段时间看到公司的开发人员也在用它作一些测试,看起来也不错,很简单,也很容易使用,所以今天花一点时间看了一下。
通过下面的一个简单的例子和注释,相信大家可以更容易理解这个工具的使用。
一个简单的例子
/*在这个例子的一开始,我执行了这样一个命令ab-n10-c10http://www.google.com/ 。这个命令的意思是启动ab,向www.google.com发送10个请求(-n10),并每次发送10个请求(-c10)——也就是说一次都发过去了。跟着下面的是ab输出的测试报告,红色部分是我添加的注释。*/
C:\ProgramFiles\ApacheSoftwareFoundation\Apache2.2\bin>ab-n10-c10http
://www.google.com/
ThisisApacheBench,Version2.0.40-dev<$Revision:1.146$>apache-2.0
Copyright1996AdamTwiss,ZeusTechnologyLtd,http://www.zeustech.net/
Copyright1997-2005TheApacheSoftwareFoundation,http://www.apache.org/
Benchmarkingwww.google.com(bepatient).....done
ServerSoftware:GWS/2.1
ServerHostname:www.google.com
ServerPort:80
DocumentPath:/
DocumentLength:230bytes
ConcurrencyLevel:10
/*整个测试持续的时间*/
Timetakenfortests:3.234651seconds
/*完成的请求数量*/
Completerequests:10
/*失败的请求数量*/
Failedrequests:0
Writeerrors:0
Non-2xxresponses:10
Keep-Aliverequests:10
/*整个场景中的网络传输量*/
Totaltransferred:6020bytes
/*整个场景中的HTML内容传输量*/
HTMLtransferred:2300bytes
/*大家最关心的指标之一,相当于LR中的每秒事务数,后面括号中的mean表示这是一个平均值*/
Requestspersecond:3.09[#/sec](mean)
/*大家最关心的指标之二,相当于LR中的平均事务响应时间,后面括号中的mean表示这是一个平均值*/
Timeperrequest:3234.651[ms](mean)
/*这个还不知道是什么意思,有知道的朋友请留言,谢谢^_^*/
Timeperrequest:323.465[ms](mean,acrossallconcurrentrequests)
/*平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题*/
Transferrate:1.55[Kbytes/sec]received
/*网络上消耗的时间的分解,各项数据的具体算法还不是很清楚*/
ConnectionTimes(ms)
minmean[+/-sd]medianmax
Connect:20318926.1302954
Processing:4021601462.030343154
Waiting:4021601462.030343154
Total:6024791276.430643184
/*下面的内容为整个场景中所有请求的响应情况。在场景中每个请求都有一个响应时间,其中50%的用户响应时间小于3064毫秒,60%的用户响应时间小于3094毫秒,最大的响应时间小于3184毫秒*/
Percentageoftherequestsservedwithinacertaintime(ms)
50%3064
66%3094
75%3124
80%3154
90%3184
95%3184
98%3184
99%3184
100%3184(longestrequest)
更多信息
ab不像LR那么强大,但是它足够轻便,如果只是在开发过程中想检查一下某个模块的响应情况,或者做一些场景比较简单的测试,ab还是一个不错的选择——至少不用花费很多时间去学习LR那些复杂的功能,就更别说那License的价格了。
下面是ab的详细参数解释,大家有兴趣的可以研究一下,最近没有足够多的时间研究,如果哪位朋友有兴趣希望可以帮忙翻译一下每个参数的含义,有问题讨论也欢迎在这里回帖^_^
ab
SupplyBASICAuthenticationcredentialstotheserver.Theusernameandpasswordareseparatedbyasingle
Numberofmultiplerequeststoperformatatime.Defaultisonerequestatatime.
Adda
Donotdisplaythe"percentageservedwithinXX[ms]table".(legacysupport).
WriteaCommaseparatedvalue(CSV)filewhichcontainsforeachpercentage(from1%to100%)thetime(inmilliseconds)ittooktoservethatpercentageoftherequests.Thisisusuallymoreusefulthanthe'gnuplot'file;astheresultsarealready'binned'.
Writeallmeasuredvaluesoutasa'gnuplot'orTSV(Tabseparatevalues)file.ThisfilecaneasilybeimportedintopackageslikeGnuplot,IDL,Mathematica,IgororevenExcel.Thelabelsareonthefirstlineofthefile.
Displayusageinformation.
Appendextraheaderstotherequest.Theargumentistypicallyintheformofavalidheaderline,containingacolon-separatedfield-valuepair(i.e.,
Do
EnabletheHTTPKeepAlivefeature,i.e.,performmultiplerequestswithinoneHTTPsession.DefaultisnoKeepAlive.
Numberofrequeststoperformforthebenchmarkingsession.Thedefaultistojustperformasinglerequestwhichusuallyleadstonon-representativebenchmarkingresults.
FilecontainingdatatoPOST.
SupplyBASICAuthenticationcredentialstoaproxyen-route.Theusernameandpasswordareseparatedbyasingle
Whenprocessingmorethan150requests,
Whencompiledin(
Donotdisplaythemedianandstandarddeviationvalues,nordisplaythewarning/errormessageswhentheaverageandmedianaremorethanoneortwotimesthestandarddeviationapart.Anddefaulttothemin/avg/maxvalues.(legacysupport).
Maximumnumberofsecondstospendforbenchmarking.Thisimpliesa
Content-typeheadertouseforPOSTdata.
Setverbositylevel-
Displayversionnumberandexit.
PrintoutresultsinHTMLtables.Defaulttableistwocolumnswide,withawhitebackground.
Stringtouseasattributesfor
Useaproxyserverfortherequests.
Stringtouseasattributesfor
Stringtouseasattributesfor
相关链接
ab是Apache的一个安装组件,所以需要下载Apache安装后才能使用,可以访问Apache的项目主页来下载http://httpd.apache.org/download.cgi
ab的更多信息可以参加Apache主页上的描述
http://httpd.apache.org/docs/2.0/programs/ab.html
作者:陈雷(Jackei)
邮箱:
Blog:
引子
按照原定计划,今天开始研究
本来想顺便把文档翻译一下,不过后来想了想,看懂是一回事,全部翻译出来又是另外一回事了,工作量太大,而且这也不是我一开始要研究JMeter的本意。不如大家有兴趣一起研究的遇到问题再一起讨论吧。
开源工具通常都是为了某个特定的目的而开发出来的,所以如果想找到一个开源的性能测试工具去与LoadRunner或者QALoad之类去比较,实在有些勉强。但是开源工具也有它自己的优势:小巧、轻便,在自己擅长的领域可以提供优秀的解决方案。所以,我们可以考虑准备一个自己的“开源测试工具箱”,平时利用空闲时间了解各种工具所适用的环境和目的,知识慢慢积累下来以后,就可以在遇到问题时顺手拈来
另外,如果8月份和9月份的空闲时间足够多,我想我会写一个系列文章来讲述在实际的开发和测试过程中引入开源性能测试工具的情况。如果有朋友感兴趣,希望大家可以一起研究和讨论。
简介
ab的全称是ApacheBench,是Apache附带的一个小工具,专门用于HTTPServer的benchmarktesting,可以同时模拟多个并发请求。前段时间看到公司的开发人员也在用它作一些测试,看起来也不错,很简单,也很容易使用,所以今天花一点时间看了一下。
通过下面的一个简单的例子和注释,相信大家可以更容易理解这个工具的使用。
一个简单的例子
/*在这个例子的一开始,我执行了这样一个命令ab-n10-c10
C:\ProgramFiles\ApacheSoftwareFoundation\Apache2.2\bin>ab-n10-c10http
://www.google.com/
ThisisApacheBench,Version2.0.40-dev<$Revision:1.146$>apache-2.0
Copyright1996AdamTwiss,ZeusTechnologyLtd,
Copyright1997-2005TheApacheSoftwareFoundation,
Benchmarkingwww.google.com(bepatient).....done
ServerSoftware:GWS/2.1
ServerHostname:www.google.com
ServerPort:80
DocumentPath:/
DocumentLength:230bytes
ConcurrencyLevel:10
/*整个测试持续的时间*/
Timetakenfortests:3.234651seconds
/*完成的请求数量*/
Completerequests:10
/*失败的请求数量*/
Failedrequests:0
Writeerrors:0
Non-2xxresponses:10
Keep-Aliverequests:10
/*整个场景中的网络传输量*/
Totaltransferred:6020bytes
/*整个场景中的HTML内容传输量*/
HTMLtransferred:2300bytes
/*大家最关心的指标之一,相当于LR中的每秒事务数,后面括号中的mean表示这是一个平均值*
Requestspersecond:3.09[#/sec](mean)
/*大家最关心的指标之二,相当于LR中的平均事务响应时间,后面括号中的mean表示这是一个平均值*/
Timeperrequest:3234.651[ms](mean)
/*这个还不知道是什么意思,有知道的朋友请留言,谢谢^_^*/
Timeperrequest:323.465[ms](mean,acrossallconcurrentrequests)
/*平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题*/
Transferrate:1.55[Kbytes/sec]received
/*网络上消耗的时间的分解,各项数据的具体算法还不是很清楚*/
ConnectionTimes(ms)
minmean[+/-sd]medianmax
Connect:20318926.1302954
Processing:4021601462.030343154
Waiting:4021601462.030343154
Total:6024791276.430643184
/*下面的内容为整个场景中所有请求的响应情况。在场景中每个请求都有一个响应时间,其中50%的用户响应时间小于3064毫秒,60%的用户响应时间小于3094毫秒,最大的响应时间小于3184毫秒*/
Percentageoftherequestsservedwithinacertaintime(ms)
50%3064
66%3094
75%3124
80%3154
90%3184
95%3184
98%3184
99%3184
100%3184(longestrequest)
更多信息
ab不像LR那么强大,但是它足够轻便,如果只是在开发过程中想检查一下某个模块的响应情况,或者做一些场景比较简单的测试,ab还是一个不错的选择——至少不用花费很多时间去学习LR那些复杂的功能,就更别说那License的价格了。
下面是ab的详细参数解释,大家有兴趣的可以研究一下,最近没有足够多的时间研究,如果哪位朋友有兴趣希望可以帮忙翻译一下每个参数的含义,有问题讨论也欢迎在这里回帖^_^
ab
[-Aauth-username
:password
][-cconcurrency
][-Ccookie-name
=value
][-d
][-ecsv-file
][-ggnuplot-file
][-h
][-Hcustom-header
][-i
][-k
][-nrequests
][-pPOST-file
][-Pproxy-auth-username
:password
][-q
][-s
][-S
][-ttimelimit
][-Tcontent-type
][-vverbosity
][-V
][-w
][-x<table>-attributes
][-Xproxy
[:port
]][-y<tr>-attributes
][-z<td>-attributes
][http://]hostname
[:port
]/path
-Aauth-username
:password
SupplyBASICAuthenticationcredentialstotheserver.Theusernameandpasswordareseparatedbyasingle
:andsentonthewirebase64encoded.Thestringissentregardlessofwhethertheserverneedsit(i.e.,hassentan401authenticationneeded).
-cconcurrency
Numberofmultiplerequeststoperformatatime.Defaultisonerequestatatime.
-Ccookie-name
=value
Adda
Cookie:linetotherequest.Theargumentistypicallyintheformofaname
=valuepair.Thisfieldisrepeatable.
-d
Donotdisplaythe"percentageservedwithinXX[ms]table".(legacysupport).
-ecsv-file
WriteaCommaseparatedvalue(CSV)filewhichcontainsforeachpercentage(from1%to100%)thetime(inmilliseconds)ittooktoservethatpercentageoftherequests.Thisisusuallymoreusefulthanthe'gnuplot'file;astheresultsarealready'binned'.
-ggnuplot-file
Writeallmeasuredvaluesoutasa'gnuplot'orTSV(Tabseparatevalues)file.ThisfilecaneasilybeimportedintopackageslikeGnuplot,IDL,Mathematica,IgororevenExcel.Thelabelsareonthefirstlineofthefile.
-h
Displayusageinformation.
-Hcustom-header
Appendextraheaderstotherequest.Theargumentistypicallyintheformofavalidheaderline,containingacolon-separatedfield-valuepair(i.e.,
"Accept-Encoding:zip/zop;8bit").
-i
Do
HEADrequestsinsteadof
GET.
-k
EnabletheHTTPKeepAlivefeature,i.e.,performmultiplerequestswithinoneHTTPsession.DefaultisnoKeepAlive.
-nrequests
Numberofrequeststoperformforthebenchmarkingsession.Thedefaultistojustperformasinglerequestwhichusuallyleadstonon-representativebenchmarkingresults.
-pPOST-file
FilecontainingdatatoPOST.
-Pproxy-auth-username
:password
SupplyBASICAuthenticationcredentialstoaproxyen-route.Theusernameandpasswordareseparatedbyasingle
:andsentonthewirebase64encoded.Thestringissentregardlessofwhethertheproxyneedsit(i.e.,hassentan407proxyauthenticationneeded).
-q
Whenprocessingmorethan150requests,
aboutputsaprogresscounton
stderrevery10%or100requestsorso.The
-qflagwillsuppressthesemessages.
-s
Whencompiledin(
ab-hwillshowyou)usetheSSLprotected
httpsratherthanthe
httpprotocol.Thisfeatureisexperimentalandveryrudimentary.Youprobablydonotwanttouseit.
-S
Donotdisplaythemedianandstandarddeviationvalues,nordisplaythewarning/errormessageswhentheaverageandmedianaremorethanoneortwotimesthestandarddeviationapart.Anddefaulttothemin/avg/maxvalues.(legacysupport).
-ttimelimit
Maximumnumberofsecondstospendforbenchmarking.Thisimpliesa
-n50000internally.Usethistobenchmarktheserverwithinafixedtotalamountoftime.Perdefaultthereisnotimelimit.
-Tcontent-type
Content-typeheadertouseforPOSTdata.
-vverbosity
Setverbositylevel-
4andaboveprintsinformationonheaders,
3andaboveprintsresponsecodes(404,200,etc.),
2andaboveprintswarningsandinfo.
-V
Displayversionnumberandexit.
-w
PrintoutresultsinHTMLtables.Defaulttableistwocolumnswide,withawhitebackground.
-x<table>-attributes
Stringtouseasattributesfor
<table>.Attributesareinserted
<tablehere
>.
-Xproxy
[:port
]
Useaproxyserverfortherequests.
-y<tr>-attributes
Stringtouseasattributesfor
<tr>.
-z<td>-attributes
Stringtouseasattributesfor
<td>.
相关链接
ab是Apache的一个安装组件,所以需要下载Apache安装后才能使用,可以访问Apache的项目主页来下载
ab的更多信息可以参加Apache主页上的描述
相关文章推荐
- 解决org.apache.velocity.exception.ResourceNotFoundException: Unable to find resource
- LAMP环境安装与apache配置
- Apache Commons工具集简介
- apache二级域名绑定到目录
- ubuntu python3.5 django1.8.5 apache2.4 wsgi mysql部署django项目
- Apache Commons Pool 故事一则
- apache的UseCanonicalName
- 【Java.Apache.Camel】
- java使用apache commons codec来进行Base64加密解密
- How to use re-write module of Apache web server 2.2.3 on FC6 with new or refurbi
- ubuntu install apache and php
- apache中配置php支持模块模式、cgi模式和fastcgi模式
- linux安装apache2.4.9
- Linux-CentOS XAMPP Apache 防盗链模块mod_auth_token的安装配置
- Mac下配置PHP+Apache+phpMyAdmin+MySql远程链接
- Linux-CentOS XAMPP Apache 支持mp4与flv拖动播放的功能模块
- Apache Commons 工具集
- Linux-CentOS XAMPP Apache mod_xsendfile 为php提供更快的文件下载
- java.lang.NoSuchMethodError: org.apache.xerces.impl.xs.XMLSchemaLoader.loadGrammar
- Windows下的PHP开发环境搭建——PHP线程安全与非线程安全、Apache版本选择,及详解五种运行模式。