一、siege的基本介绍
Siege是一个开源的压力测试和基准工具,属于Linux系统下的一个测试工具,完全使用C语言实现,可以对HTTP和FTP服务器进行负载和性能测试,siege的设计主要用于WEB的性能测试。
Siege是由多线程实现的同步压测工具,它实现的是模拟n个用户不停地访问某个URL的场景。由于多线程开销会比多进程小一些,因此该压测工具比多进程的压测工具在系统开销上会好很多。支持同时压测多个URL支持ftp、http、https,也能够随机选取URL进行压测,可以发送GET、POST、HEAD等多种请求,并且程序中特意增加了许多解决不同平台上兼容性的代码。运行比较稳定,相对来说是比较好的工具,并且到目前位置,Siege的版本依然在更新中。
但是siege也有一些缺点。Siege的时间控制并不精确,如:想要测试5s,但是实际输出的测试时间为4.89s,另外一个小的缺点是,由于使用多线程实现,一个进程可以开启的线程数量本身是有限的,并且线程过多的情况下CPU在线程间切换也是一笔不小的开销,十分影响效率。因此Siege的使用过程中还要注意开启的并发用户数不能太多
二、下载安装
1、下载安装
wget http://download.joedog.org/siege/siege-3.1.4.tar.gz
tar -zxvf siege-3.1.4.tar.gz
./configure --prefix=/cdy/ceshi/test/siege --mandir=/cdy/ceshi/test/man --with-ssl=/cdy/ceshi/test/ssl
mkdir -p /cdy/ceshi/test/siege/etc
mkdir -p /cdy/ceshi/test/siege/var
make
make install
2、查看是否安装成功/cdy/ceshi/test/siege/bin/siege -C
三、Siege命令常用参数
-c 200 指定并发数200
-r 5 指定测试的次数5
-f urls.txt 制定url的文件
-i internet系统,随机发送url
-b 请求无需等待 delay=0
-t 5 持续测试5分钟
# -r和-t一般不同时使用
四、实例
get请求:
1、直接运行请求一个接口
/cdy/cdy/siege/bin/siege -c 1 -t 5S "http://10.20.0.56:8081/api/v3/home/recommendV2?hasPhoto=0&isChange=0&page=1&limit=3"
2、url存储在文档里,可以多个一起运行
/cdy/cdy/siege/bin/siege -c 10 -t 10s -f /cdy/cdy.txt
post请求:
1、不用传header和body
/cdy/cdy/siege/bin/siege -c 10 -r 1 "http://10.20.0.56:8081/api/v3/home/interested/save? POST deptIds=1"
2、要传header和body
#header:Content-Type: application/json
#若body是json形式,body文件postfile.json已经定义header是Content-Type: application/json
如:/cdy/ceshi/test/siege/bin/siege -c 10 "http://10.20.0.56:8081/api/v3/patient/wechat/patient/save POST </cdy/test/postfile.json" -t 10s
3、登录接口
/cdy/ceshi/test/siege/bin/siege -c 10 -r 100 "http://10.20.0.56:8081/api/v3/auth/login?cellphone=15757164410&password=e10adc3949ba59abbe56e057f20f883e POST"
4、需要在header中传token
/cdy/ceshi/test/siege/bin/siege -c 10 --header "uid: 17002192300" --header "token: 45fb389a90702ac635a6d1c2446acee2" "http://10.20.0.56:8081/api/v3/auth/doOCRAuth POST" -t 10s
#header是Content-Type: application/json时,用命令-H “Content-Type: application/json”
五、Siege输出结果说明
Transactions: 总共测试次数
Availability: 成功次数百分比
Elapsed time: 总共耗时多少秒
Data transferred: 总共数据传输
Response time: 等到响应耗时
Transaction rate: 平均每秒处理请求数
Throughput: 吞吐率
Concurrency: 最高并发
Successful transactions: 成功的请求数
Failed transactions: 失败的请求数
运行结果存储在:siege.log