Linux-siege

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//每次传输所花最短时间

相关推荐