首页 > 代码库 > 【性能测试工具】- Siege
【性能测试工具】- Siege
优点:比http_load好用,因为相同的url.txt文件在httpload不好使,所以在易用性上httpload不如siege,仍需进一步调研。
缺点:安装过程中,不能自动创建siege.log文件,需手动创建。
概述:
Siege(英文意思是"围攻") 是一个压力测试工具。与http_load类似的是,Siege也是读取urls.txt文件,可以根据配置对一个web站点进行多用户的并发访问,记录每个用户所有请求过程的响应时间,并在一定数量的并发访问下重复进行。这样就比apachebench只能对1个url执行压力测试要占优势。 Siege 支持基本的认证,cookies,HTTP和HTTPS协议。
官方网址:http://www.joedog.org/siege/
安装:
# tar -zxvf siege-2.72.tar.gz
# cd siege-2.72
/siege-2.72#./configure
/siege-2.72# make
/siege-2.72#makeinstall
基本使用:
XXXXXXXXXXXX:~/siege-2.72$ siege -c 5 -r 10 -f urlsdamai.txt /*并发5个用户,迭代10次,-f 表示后面是要读取的urls列表*/
** SIEGE 2.72
** Preparing 5concurrent users for battle.
The server is nowunder siege.. done.
操作结果:
Transactions: 50 hits /*访问服务器50次,或叫做完成50次处理*/
Availability: 100.00 % /*成功率100%*/
Elapsed time: 8.14 secs /*总共用时8.14秒*/
Data transferred: 5.25 MB /*共数据传输5.25兆*/
Response time: 0.19 secs /*响应用时0.19秒:显示网络连接的速度*/
Transaction rate: 6.14 trans/sec /*平均每秒完成6.14次处理,服务器端的处理速度*/
Throughput: 0.65 MB/sec /*平均每秒传输数据0.65兆*/
Concurrency: 1.15 /*实际最高并发数是1.15个用户*/
Successfultransactions: 50 /*成功处理了50个请求*/
Failedtransactions: 0 /*失败处理了0个请求*/
Longesttransaction: 0.46 /最长的每次处理时间是0.46秒/
Shortesttransaction: 0.11 /最短的每次处理时间是0.11秒/
FILE:/usr/local/var/siege.log
You can disablethis annoying message by editing
the .siegerc filein your home directory; change
the directive‘show-logfile‘ to false.
[error] unable to create log file: Permission denied /*当非root用户执行了并发的命令之后 siege -c 5 -r 10 -f urlsdamai.txt,siege的log不能够写入“siege.log”文件,原因是这个文件在make && make install的时候并没有创建。所以解决的方式有2个,第1个解决此问题的方式是到“/usr/local/var/”目录内手动建1个“siege.log”,第2个方式是直接切换成root用户,执行后会自动创建这个siege.log 文件*/
参数说明:
Usage: siege[options]
siege [options] URL
siege -g URL
Options:
-V, --version VERSION, prints the version number.
-h, --help HELP, prints this section.
-C, --config CONFIGURATION, show the currentconfig.
-v, --verbose VERBOSE, prints notification to screen.
-g, --get GET, pull down HTTP headers anddisplay the
transaction. Greatfor application debugging.
-c, --concurrent=NUM CONCURRENT users, default is 10 /*并发的用户数*/
-i, --internet INTERNET user simulation, hits URLsrandomly.
-b, --benchmark BENCHMARK: no delays between requests.
-t, --time=NUMm TIMED testing where "m" ismodifier S, M, or H /*测试执行的时间,比如-t 1M是跑60秒*/
ex: --time=1H, one hour test.
-r, --reps=NUM REPS, number of times to run thetest. /*迭代次数,不与-t同时使用*/
-f, --file=FILE FILE, select a specific URLS FILE.
-R, --rc=FILE RC, specify an siegerc file
-l, --log[=FILE] LOG to FILE. If FILE is not specified,the
default is used:PREFIX/var/siege.log
-m, --mark="text" MARK, mark the log file with a string.
-d, --delay=NUM Time DELAY, random delay before eachrequst
between 1 and NUM.(NOT COUNTED IN STATS)
-H, --header="text" Add a header to request (can be many)
-A, --user-agent="text" SetsUser-Agent in request
讨论/疑问:
- 测试结果里的“Response time”代表什么意思?
- 结果里的“Concurrency”是什么意思?