SecularBird 2013-05-06
Linux下Siege压力测试
Siege(英文意思是围攻)是一个压力测试和评测工具,设计用于WEB开发这评估应用在压力下的承受能力:可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。
Siege
说明
ab的主要弱点在于它不能让你模拟一个更加真实的请求分布——例如你想通过设置一个请求的列表来在这些列表之间来回测试,而siege就可以。
安装
siege需要自己从http://www.joedog.org/上自己下载,然后编译:
./configure--prefix=/usr/local/siege--mandir=/usr/local/man
make
#转到超级用户
makeinstall
注意在configure的时候,一定要设置mandir参数,否则当你通过mansiege查看siege帮助的时候会看不到他的manual.
安装完成后,运行bin中的siege_config命令来创建.siege文件之后,你可以通过
./siege-C
命令来查看当前配置
最简单的使用命令:
./siegehttp://localhost/
#用来测试本地主页
参数介绍
-cNUM
设置并发的用户(连接)数量.默认的连接数量可以到~/.siegerc中查看,指令为concurrent=x。比如-c10,设置并发10个连接
-rNUM
(repetitions),重复数量,即每个连接发出的请求数量,设置这个的话,就不需要设置-t了。对应.siegerc配置文件中的reps=x指令
-tNUM
(time),持续时间,即测试持续时间,在NUM时间后结束,单位默认为分,比如-t10,那么测试时间为10分钟,-t10s,则测试时间为10秒钟。对应.siegerc中的指令为time=x指令
-b
(benchmark),基准测试,如果设置这个参数的话,那么delay时间为0。mansiege中有一句话这样说:
it'snotrecommandedthatyouusethisoptionwhileloadtesting.
说明基准测试和loadtesting是完全不同的,至于有什么不同,可以阅读BenchMarkingVSLoadTestingVSPerformance.
-furl.txt
(file),这是文件。对应.siegerc配置文件中的file=x指令
其他比较关注的测试方法,比如我想使用Keep-Alive方式进行测试,可以在.siegerc配置文件中进行修改,将connect=close改为connect=keep-alive
另外您还可以通过-HHEADER参数来设置请求header。
结果分析
待续...
最早使用的压力测试工具是apache的ab(apachebenchmark),apacheab做重复压力测试不错,但是每次只能测试一个链接,如何测试一组链接(比如从日志中导出的1个小时的日志,做真实压力测试),后来找到了这个:
Siege是一个压力测试和评测工具,设计用于WEB开发这评估应用在压力下的承受能力:可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。
SIEGEisanhttpregressivetestingandbenchmarkingutility.Itwasdesignedtoletwebdevelopersmeasuretheperformanceoftheircodeunderduress,toseehowitwillstanduptoloadontheinternet.Itletstheuserhitawebserverwithaconfigurablenumberofconcurrentsimulatedusers.Thoseusersplacethewebserver"undersiege."Thedurationofthesiegeismeasuredintransactions,thesumofsimulatedusersandthenumberoftimeseachsimulateduserrepeatstheprocessofhittingtheserver.Thus20concurrentusers50timesis1000transactions,thelengthofthetest.
下载/安装
Siege时一个开放源代码项目:http://www.joedog.org/siege/
下载:
wgetftp://sid.joedog.org/pub/siege/siege-latest.tar.gz
安装:
%./configure;make
#makeinstall
siege包含了一组压力测试工具:
SIEGE(1)Siege是一个HTTP压力测试和评测工具.
使用样例:
任务列表:www.chedong.com.url文件
http://www.chedong.com/tech/
http://www.chedong.com/tech/acdsee.html
http://www.chedong.com/tech/ant.html
http://www.chedong.com/tech/apache_install.html
http://www.chedong.com/tech/awstats.html
http://www.chedong.com/tech/cache.html
http://www.chedong.com/tech/click.html
http://www.chedong.com/tech/cms.html
http://www.chedong.com/tech/compress.html
http://www.chedong.com/tech/cvs_card.html
http://www.chedong.com/tech/default.html
http://www.chedong.com/tech/dev.html
http://www.chedong.com/tech/gnu.html
....
siege-c20-r2-fwww.chedong.com.url
参数说明:
-c20并发20个用户
-r2重复循环2次
-fwww.chedong.com.url任务列表:URL列表
输出样例:
**Siege2.59
**Preparing20concurrentusersforbattle.这次“战斗”准备了20个并发用户
Theserverisnowundersiege..done.服务在“围攻”测试中:
Transactions:40hits完成40次处理
Availability:100.00%成功率
Elapsedtime:7.67secs总共用时
Datatransferred:877340bytes共数据传输:877340字节
Responsetime:1.65secs相应用时1.65秒:显示网络连接的速度
Transactionrate:5.22trans/sec平均每秒完成5.22次处理:表示服务器后台处理的速度
Throughput:114385.92bytes/sec平均每秒传送数据:114385.92字节
Concurrency:8.59最高并发数8.59
Successfultransactions:40成功处理次数
Failedtransactions:0失败处理次数
注意:由于速度很快,可能会达不到并发速度很高就已经完成。Responsetime显示的是测试机器和被测试服务器之间网络链接状况。Transactionrate则表示服务器端任务处理的完成速度。
辅助工具:
增量压力测试:
为了方便增量压力测试,siege还包含了一些辅助工具:
bombardment(1)
是一个辅助工具:用于按照增量用户压力测试:
使用样例:
bombardmenturlfile.txt5341
初始化URL列表:urlfile.txt
初始化为:5个用户
每次增加:3个用户
运行:4次
每个客户端之间的延迟为:1秒
输出成CSV格式:
siege2csv.pl(1)
siege2csv.pl将bombardment的输出变成CSV格式:
TimeDataTransferredResponseTimeTransactionRateThroughputConcurrencyCode200(notethatthisishorriblybroken.)
24260.226030640.024.0210014.350.08
60559.9815076600.0110.0925136.050.12
93859.9823374960.0215.6438971.260.26
11576028832440.0419.2848054.070.78
参考:
开源测试工具:http://www.opensourcetesting.org/performance.php
[technoratirelativetag]
[相关内容]
由tristones发表于2004年02月18日下午02時53分
留言
SIEGE测试于目标网站的网页动态静态没有关系,只要任务列表是动态网页即可。即使是需要认证的,也可以通过预先设置POSTHEADER等方式模拟登录。
done.
Transactions:455hits
Availability:75.83%
Elapsedtime:85.45secs
Datatransferred:4097.30MB
Responsetime:11.32secs
Transactionrate:5.32trans/sec
Throughput:47.95MB/sec
Concurrency:60.30
Successfultransactions:455
Failedtransactions:145
Longesttransaction:53.61
Shortesttransaction:0.80
FILE:/usr/local/siege/var/siege.log
Youcandisablethisannoyingmessagebyediting
the.siegercfileinyourhomedirectory;change
thedirective'show-logfile'tofalse.
[root@localhostbin]#./siege-c300-r2-f/work/siege/siege.txt;
cat/usr/local/siege/var/siege.log
Date&Time,Trans,ElapTime,DataTrans,RespTime,TransRate,Throughput,Concurrent,OKAY,Failed
2009-06-0213:33:21,455,85.45,4097,11.32,5.32,47.95,60.30,455,145
done.
Transactions:192hits
Availability:96.00%
Elapsedtime:78.64secs
Datatransferred:0.09MB
Responsetime:5.13secs
Transactionrate:2.44trans/sec
Throughput:0.00MB/sec
Concurrency:12.53
Successfultransactions:192
Failedtransactions:8
Longesttransaction:51.85
Shortesttransaction:1.14
FILE:/usr/local/siege/var/siege.log
Youcandisablethisannoyingmessagebyediting
the.siegercfileinyourhomedirectory;change
thedirective'show-logfile'tofalse.
[root@localhostbin]#./siege-c100-r2-f/work/siege/url.txt;
http://211.139.163.252/lsp/leService.doPOST</work/siege/data.txt
<?xmlversion="1.0"encoding="GBK"?><!DOCTYPEsvc_initSYSTEM"MLP_SVC_INIT_320.DTD"><svc_initver="3.2.0"><hdrver="3.2.0"><client><id>1001</id><pwd>1001</pwd></client></hdr><slirver="2.0.0"res_type="SYNC"><msids><msid>8613501502020</msid><msid>8613602887904</msid></msids><loc_typetype="CURRENT_OR_LAST"/><priotype="NORMAL"/><req_resulttype="AREA_CODE"/></slir></svc_init>
Web服务器性能/压力测试工具http_load、webbench、ab、Siege使用教程
2009年04月14日10:16|作者:licess
一、http_load
程序非常小,解压后也不到100K
http_load以并行复用的方式运行,用以测试web服务器的吞吐量与负载。但是它不同于大多数压力测试工
具,它可以以一个单一的进程运行,一般不会把客户机搞死。还可以测试HTTPS类的网站请求。
下载地址:http://soft.vpser.net/test/http_load/http_load-12mar2006.tar.gz
安装很简单
#tarzxvfhttp_load-12mar2006.tar.gz
#cdhttp_load-12mar2006
#make&&makeinstall
命令格式:http_load-p并发访问进程数-s访问时间需要访问的URL文件
参数其实可以自由组合,参数之间的选择并没有什么限制。比如你写成http_load-parallel5-seconds
300urls.txt也是可以的。我们把参数给大家简单说明一下。
-parallel简写-p:含义是并发的用户进程数。
-fetches简写-f:含义是总计的访问次数
-rate简写-p:含义是每秒的访问频率
-seconds简写-s:含义是总计的访问时间
准备URL文件:urllist.txt,文件格式是每行一个URL,URL最好超过50-100个测试效果比较好.文件格式
如下:
http://www.vpser.net/uncategorized/choose-vps.html
http://www.vpser.net/vps-cp/hypervm-tutorial.html
http://www.vpser.net/coupons/diavps-april-coupons.html
http://www.vpser.net/security/vps-backup-web-mysql.html
例如:
http_load-p30-s60urllist.txt
参数了解了,我们来看运行一条命令来看看它的返回结果
命令:%./http_load-rate5-seconds10urls说明执行了一个持续时间10秒的测试,每秒的频率为5。
49fetches,2maxparallel,289884bytes,in10.0148seconds5916meanbytes/connection4.89274
fetches/sec,28945.5bytes/secmsecs/connect:28.8932mean,44.243max,24.488minmsecs/first
-response:63.5362mean,81.624max,57.803minHTTPresponsecodes:code200—49
结果分析:
1.49fetches,2maxparallel,289884bytes,in10.0148seconds
说明在上面的测试中运行了49个请求,最大的并发进程数是2,总计传输的数据是289884bytes,运行的时间是10.0148秒
2.5916meanbytes/connection说明每一连接平均传输的数据量289884/49=5916
3.4.89274fetches/sec,28945.5bytes/sec
说明每秒的响应请求为4.89274,每秒传递的数据为28945.5bytes/sec
4.msecs/connect:28.8932mean,44.243max,24.488min说明每连接的平均响应时间是28.8932msecs
,最大的响应时间44.243msecs,最小的响应时间24.488msecs
5.msecs/first-response:63.5362mean,81.624max,57.803min
6、HTTPresponsecodes:code200—49说明打开响应页面的类型,如果403的类型过多,那可能
要注意是否系统遇到了瓶颈。
特殊说明:
测试结果中主要的指标是fetches/sec、msecs/connect这个选项,即服务器每秒能够响应的查询次数,
用这个指标来衡量性能。似乎比apache的ab准确率要高一些,也更有说服力一些。
Qpt-每秒响应用户数和responsetime,每连接响应用户时间。
测试的结果主要也是看这两个值。当然仅有这两个指标并不能完成对性能的分析,我们还需要对服务器的
cpu、men进行分析,才能得出结论
二、webbench
webbench是Linux下的一个网站压力测试工具,最多可以模拟3万个并发连接去测试网站的负载能力。下载地址可以到google搜,我这里给出一个
下载地址:http://soft.vpser.net/test/webbench/webbench-1.5.tar.gz
这个程序更小,解压后不到50K,呵呵
安装非常简单
#tarzxvfwebbench-1.5.tar.gz
#cdwebbench-1.5
#make&&makeinstall
会在当前目录生成webbench可执行文件,直接可以使用了
用法:
webbench-c并发数-t运行测试时间URL
如:
webbench-c5000-t120http://www.vpser.net
三、ab
ab是apache自带的一款功能强大的测试工具
安装了apache一般就自带了,
用法可以查看它的说明
$./ab
./ab:wrongnumberofarguments
Usage:./ab[options][http://]hostname[:port]/path
Optionsare:
-nrequestsNumberofrequeststoperform
-cconcurrencyNumberofmultiplerequeststomake
-ttimelimitSecondstomax.waitforresponses
-ppostfileFilecontainingdatatoPOST
-Tcontent-typeContent-typeheaderforPOSTing
-vverbosityHowmuchtroubleshootinginfotoprint
-wPrintoutresultsinHTMLtables
-iUseHEADinsteadofGET
-xattributesStringtoinsertastableattributes
-yattributesStringtoinsertastrattributes
-zattributesStringtoinsertastdorthattributes
-CattributeAddcookie,eg.‘Apache=1234.(repeatable)
-HattributeAddArbitraryheaderline,eg.‘Accept-Encoding:gzip’
Insertedafterallnormalheaderlines.(repeatable)
-AattributeAddBasicWWWAuthentication,theattributes
areacolonseparatedusernameandpassword.
-PattributeAddBasicProxyAuthentication,theattributes
areacolonseparatedusernameandpassword.
-Xproxy:portProxyserverandportnumbertouse
-VPrintversionnumberandexit
-kUseHTTPKeepAlivefeature
-dDonotshowpercentilesservedtable.
-SDonotshowconfidenceestimatorsandwarnings.
-gfilenameOutputcollecteddatatognuplotformatfile.
-efilenameOutputCSVfilewithpercentagesserved
-hDisplayusageinformation(thismessage)
参数众多,一般我们用到的是-n和-c
例如:
./ab-c1000-n100http://www.vpser.net/index.php
这个表示同时处理1000个请求并运行100次index.php文件.
四、Siege
一款开源的压力测试工具,可以根据配置对一个WEB站点进行多用户的并发访问,记录每个用户所有请求过程的相应时间,并在一定数量的并发访问下重复进行。
官方:http://www.joedog.org/
Siege下载:http://soft.vpser.net/test/siege/siege-2.67.tar.gz
解压:
#tar-zxfsiege-2.67.tar.gz
进入解压目录:
#cdsiege-2.67/
安装:
#./configure;make
#makeinstall
使用
siege-c200-r10-fexample.url
-c是并发量,-r是重复次数。url文件就是一个文本,每行都是一个url,它会从里面随机访问的。
example.url内容:
http://www.licess.cn
http://www.vpser.net
http://soft.vpser.net
结果说明
Liftingtheserversiege…done.
Transactions:3419263hits//完成419263次处理
Availability:100.00%//100.00%成功率
Elapsedtime:5999.69secs//总共用时
Datatransferred:84273.91MB//共数据传输84273.91MB
Responsetime:0.37secs//相应用时1.65秒:显示网络连接的速度
Transactionrate:569.91trans/sec//均每秒完成569.91次处理:表示服务器后
Throughput:14.05MB/sec//平均每秒传送数据
Concurrency:213.42//实际最高并发数
Successfultransactions:2564081//成功处理次数
Failedtransactions:11//失败处理次数
Longesttransaction:29.04//每次传输所花最长时间
Shortesttransaction:0.00//每次传输所花最短时间