“Siege”意为围攻、包围。是一款使用纯C语言编写的开源WEB压测工具,适合在GNU/Linux上运行,具有较强的可移植性。
Siege使用多线程实现,支持随机访问多个URL,可以通过控制并发数、总请求数(or压测时间)来实现对web服务的压测。
Siege支持http,https,ftp三种请求方式,支持GET和POST方法,压测方式为同步压测。
可以根据配置对一个web站点进行并发访问,记录每一个用户所有的请求过程的相应时间,并可以在一定数量的并发访问下重复使用。但是我觉得,Siege用于仿真用户请求负载是不错的。但是请不要使用它来执行最高的性能基准调校测试,在这个方面,我觉得还是Apache ab更好。
下面我就不多说废话,开始安装
1、请输入该网址至浏览器下载对应的版本下载Siege(点击)
这边我下载的版本是[siege-latest.tar.gz]
2、
root# tar -zxvf siege-latest.tar.gz //解压
root# cd siege-4.0.4
root#cd siege-*/ //进入siege路径
root# sudo apt-get install build-essential //如果没有编译工具,先要安装一个
root# ./configure //编译安装
root# make
root# sudo make install
root# siege.config //创建配置文件
打开~/.siege/siege.conf文件,修改logfile选项
logfile = $(HOME)/siege.log
3、输入siege -h 或者 siege -version ,验证是否成功安装(展示如下)
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 current config.
-v, --verbose VERBOSE, prints notification to screen.
-g, --get GET, pull down HTTP headers and display the
transaction. Great for application debugging.
-c, --concurrent=NUM CONCURRENT users, default is 10
-i, --internet INTERNET user simulation, hits URLs randomly.
-b, --benchmark BENCHMARK: no delays between requests.
-t, --time=NUMm TIMED testing where "m" is modifier S, M, or H
ex: --time=1H, one hour test.
-r, --reps=NUM REPS, number of times to run the test.
-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 each requst
between 1 and NUM. (NOT COUNTED IN STATS)
-H, --header="text" Add a header to request (can be many)
-A, --user-agent="text" Sets User-Agent in request
Copyright (C) 2010 by Jeffrey Fulmer, et al.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE
4、常见的参数(以上图中其实都有,翻译可能不太准确,多多包涵)
-V版本号
-H帮助
-C显示当前配置
-V将通知打印屏幕
-G获取HTTP并显示
-C并发数
-T 时间
-R 运行测试次数
-F选择特定URL文件
-R指定SigeRC文件
-L日志log文件
-M标记日志文件
-D时间延迟
-H添加请求
-A设置代理
这边我粘贴一张图片解释一下吧,总比我这蹩脚英语水平翻译要好。
Siege输出结果说明:
Transactions: 总共测试次数
Availability: 成功次数百分比
Elapsed time: 总共耗时多少秒
Data transferred: 总共数据传输
Response time: 等到响应耗时
Transaction rate: 平均每秒处理请求数
Throughput: 吞吐率
Concurrency: 最高并发
Successful transactions: 成功的请求数
Failed transactions: 失败的请求数
注意事项:
1.发送post请求时,url格式为:http://www.xxxx.com/ POST p1=v1&p2=v2
2.如果url中含有空格和中文,要先进行url编码,否则siege发送的请求url不准确
以下三个举例:
(1)比如测试一个客户端的接口并发情况
接口地址是:http://118.212.149.xx:8080/xx/xx/xx
请求类型 : POST
请求参数 : {“accountId”:”123”,”platform”:”ios”}
请求次数 :10次
请求并发数量 : 200
请求 : (请求参数说明请参照上文中表格)
root#siege"http://118.212.149.xx:8080/xx/xx/xxPOST{\"accountId\":\"123\",\"platform\":\"ios\"}" -r 10 -c 200
返回 : (返回参数说明请参照上文中表格)
done.
Transactions: 2000 hits
Availability: 100.00 %
Elapsed time: 15.27 secs
Data transferred: 0.07 MB
Response time: 0.47 secs
Transaction rate: 130.98 trans/sec
Throughput: 0.00 MB/sec
Concurrency: 61.45
Successful transactions: 2000
Failed transactions: 0
Longest transaction: 8.17
Shortest transaction: 0.06
(2)用法举例
siege -c 300 -r 100 -f url.txt
说明:-c是并发量,-r是重复次数。url.txt就是一个文本文件,里面是要测试的url,url.txt每行都是一个url
urls.txt文件是很多行待测试URL的列表以换行符断开,格式为:
[protocol://]host.domain.com[:port][path/to/file]
urls.txt内容:
http://192.168.80.166/01.jpg
http://192.168.80.166/02.jpg
http://192.168.80.166/03.jpg
http://192.168.80.166/04.jpg
http://192.168.80.166/05.jpg
http://192.168.80.166/06.jpg
结果:
Transactions: 300 hits #已完成的事务总署
Availability: 100.00 % #完成的成功率
Elapsed time: 0.08 secs #总共使用的时间
Data transferred: 0.94 MB #响应中数据的总大小
Response time: 0.00 secs #显示网络连接的速度
Transaction rate: 3750.00 trans/sec #平均每秒完成的事务数
Throughput: 11.79 MB/sec #平均每秒传送的数据量
Concurrency: 8.50 #实际最高并发链接数
Successful transactions: 300 #成功处理的次数
Failed transactions: 0 #失败处理的次数
Longest transaction: 0.01 #最长事务处理的时间
Shortest transaction: 0.00 #最短事务处理时间
(3)200并发针对谷歌发送请求100次
siege -c 200 -r 100 http://www.google.com
在urls.txt中列出所有的网址
siege -c 200 -r 100 -f urls.txt
随机选取urls.txt中列出所有的网址
siege -c 200 -r 100 -f urls.txt -i
delay=0,更准确的压力测试,而不是功能测试
siege -c 200 -r 100 -f urls.txt -i -b
指定http请求头 文档类型
siege -H "Content-Type:application/json" -c 200 -r 100 -f urls.txt -i -b