一、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

压测小工具siege的简单应用

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的简单应用

 

三、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"

2url存储在文档里,可以多个一起运行

/cdy/cdy/siege/bin/siege -c 10 -t 10s -f /cdy/cdy.txt

post请求

1、不用传headerbody

/cdy/cdy/siege/bin/siege -c 10 -r 1 "http://10.20.0.56:8081/api/v3/home/interested/save? POST deptIds=1"

2、要传headerbody

#header:Content-Type: application/json

#bodyjson形式,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

#headerContent-Type: application/json时,用命令-HContent-Type: application/json

 

五、Siege输出结果说明

Transactions: 总共测试次数

Availability: 成功次数百分比

Elapsed time: 总共耗时多少秒

Data transferred: 总共数据传输

Response time: 等到响应耗时

Transaction rate: 平均每秒处理请求数

Throughput: 吞吐率

Concurrency: 最高并发

Successful transactions: 成功的请求数

Failed transactions: 失败的请求数

运行结果存储在:siege.log

相关文章: