您的位置:首页 > 运维架构 > Apache

【转】开源性能测试工具 - 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
[-
A
auth-username
:
password
][-
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

SupplyBASICAuthenticationcredentialstotheserver.Theusernameandpasswordareseparatedbyasingle
:
andsentonthewirebase64encoded.Thestringissentregardlessofwhethertheserverneedsit(i.e.,hassentan401authenticationneeded).

-c
concurrency

Numberofmultiplerequeststoperformatatime.Defaultisonerequestatatime.

-C
cookie-name
=
value

Adda
Cookie:
linetotherequest.Theargumentistypicallyintheformofaname
=
valuepair.Thisfieldisrepeatable.

-d


Donotdisplaythe"percentageservedwithinXX[ms]table".(legacysupport).

-e
csv-file

WriteaCommaseparatedvalue(CSV)filewhichcontainsforeachpercentage(from1%to100%)thetime(inmilliseconds)ittooktoservethatpercentageoftherequests.Thisisusuallymoreusefulthanthe'gnuplot'file;astheresultsarealready'binned'.

-g
gnuplot-file

Writeallmeasuredvaluesoutasa'gnuplot'orTSV(Tabseparatevalues)file.ThisfilecaneasilybeimportedintopackageslikeGnuplot,IDL,Mathematica,IgororevenExcel.Thelabelsareonthefirstlineofthefile.

-h


Displayusageinformation.

-H
custom-header

Appendextraheaderstotherequest.Theargumentistypicallyintheformofavalidheaderline,containingacolon-separatedfield-valuepair(i.e.,
"Accept-Encoding:zip/zop;8bit"
).

-i


Do
HEAD
requestsinsteadof
GET
.

-k


EnabletheHTTPKeepAlivefeature,i.e.,performmultiplerequestswithinoneHTTPsession.DefaultisnoKeepAlive.

-n
requests

Numberofrequeststoperformforthebenchmarkingsession.Thedefaultistojustperformasinglerequestwhichusuallyleadstonon-representativebenchmarkingresults.

-p
POST-file

FilecontainingdatatoPOST.

-P
proxy-auth-username
:
password

SupplyBASICAuthenticationcredentialstoaproxyen-route.Theusernameandpasswordareseparatedbyasingle
:
andsentonthewirebase64encoded.Thestringissentregardlessofwhethertheproxyneedsit(i.e.,hassentan407proxyauthenticationneeded).

-q


Whenprocessingmorethan150requests,
ab
outputsaprogresscounton
stderr
every10%or100requestsorso.The
-q
flagwillsuppressthesemessages.

-s


Whencompiledin(
ab-h
willshowyou)usetheSSLprotected
https
ratherthanthe
http
protocol.Thisfeatureisexperimentalandveryrudimentary.Youprobablydonotwanttouseit.

-S


Donotdisplaythemedianandstandarddeviationvalues,nordisplaythewarning/errormessageswhentheaverageandmedianaremorethanoneortwotimesthestandarddeviationapart.Anddefaulttothemin/avg/maxvalues.(legacysupport).

-t
timelimit

Maximumnumberofsecondstospendforbenchmarking.Thisimpliesa
-n50000
internally.Usethistobenchmarktheserverwithinafixedtotalamountoftime.Perdefaultthereisnotimelimit.

-T
content-type

Content-typeheadertouseforPOSTdata.

-v
verbosity

Setverbositylevel-
4
andaboveprintsinformationonheaders,
3
andaboveprintsresponsecodes(404,200,etc.),
2
andaboveprintswarningsandinfo.

-V


Displayversionnumberandexit.

-w


PrintoutresultsinHTMLtables.Defaulttableistwocolumnswide,withawhitebackground.

-x
<table>-attributes

Stringtouseasattributesfor
<table>
.Attributesareinserted
<table
here
>
.

-X
proxy
[:
port
]


Useaproxyserverfortherequests.

-y
<tr>-attributes

Stringtouseasattributesfor
<tr>
.

-z
<td>-attributes

Stringtouseasattributesfor
<td>
.

相关链接

ab是Apache的一个安装组件,所以需要下载Apache安装后才能使用,可以访问Apache的项目主页来下载http://httpd.apache.org/download.cgi

ab的更多信息可以参加Apache主页上的描述

http://httpd.apache.org/docs/2.0/programs/ab.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: