Siege是一个压力测试 和评测工具,设计用于web 开发这评估应用在压力下的承受能力:
可以根据配置对一个WEB站点进行多用户的并发访问,
记录每个用户所有请求过程的相应时间,
并在一定数量的并发访问下重复进行。
Siege时一个开放源代码项目: http://www.joedog.org
下载:去官网joedog.org/pub/siege/siege-latest.tar.gz 下载
解压: tar -zxf siege-latest.tar.gz
安装:
进入解压目录:
cd siege-2.70
执行安装命令(注意安装权限,要sudo或者在root下运行):
./configure make
make install
成功:
siege –help (如果有help出现,则已经安装成功)
使用说明:
举例:
siege -c 20 -r 2 -f baidu.com
参数说明:
-c 20 并发20个用户
-r 2 重复循环2次
-f baidu.url 任务列表文件:URL列表
** Siege 2.70
** Preparing 20 concurrent users for battle. 这次“战斗”准备了20个并发用户
The server is now under siege.. done. 服务在“围攻”测试中:
Transactions: 40 hits 完成40次处理
Availability: 100.00 % 成功率
Elapsed time: 7.67 secs 总共用时
Data transferred: 877340 bytes 共数据传输:877340字节
Response time: 1.65 secs 相应用时1.65秒:显示网络连接的速度
Transaction rate: 5.22 trans/sec 平均每秒完成5.22次处理:表示服务器后台处理的速度
Throughput: 114385.92 bytes/sec 平均每秒传送数据:114385.92字节
Concurrency: 8.59 最高并发数 8.59
Successful transactions: 40 成功处理次数
Failed transactions: 0 失败处理次数
Siege命令常用参数
-c 200 指定并发数200
-r 5 指定测试的次数5
-f urls.txt 制定url的文件
-i internet系统,随机发送url
-b 请求无需等待 delay=0
-t 5 持续测试5分钟
# -r和-t一般不同时使用
常用的siege命令举例
# 200个并发对http://www.google.com发送请求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
## 一些需要注意的地方:
1,发送post请求时,url格式为:http://www.xxxx.com/ POST p1=v1&p2=v2
2,如果url中含有空格和中文,要先进行url编码,否则siege发送的请求url不准确
添加
siege -C 可以查看相关的配置参数,可以自行修改,比如是否显示log,超时时间
提示:
我安装的时候一直没有注意权限问题,导致一直安装不成功。后来才注意到要在root权限下运行!
这个工具就是模拟用户访问,我之所以用到了它,是因为代码优化,需要测试访问时间。判断测试后的平均访问时间是否有缩短。对比之前的相应时间,看是否速度上有加快。
并发,循环,url列表可以根据情况而定。比如我把并发设置为30,循环1000次,只对一个url测试。
这个具体根据情况而定。
参考:
http://blog.csdn.net/qingye2008/article/details/34500949
http://ruby8.iteye.com/blog/1150457