Linux上安装部署轻量级高性能压力测试工具siege实操教程与常用示例
一、siege压力测试工具简介
Siege Manual
https://www.joedog.org/siege-manual/JoeDog/siege: Siege is an http load tester and benchmarking utility
https://github.com/JoeDog/siege?tab=readme-ov-file
siege是一个开源的、支持对单个或多个URL进行压力测试的实用工具;它支持自定义用户数量和访问次数进行模拟并发访问;且支持HTTP/HTTPS 1.0和1.1协议、GET和POST指令、cookie、身份认证和日志记录。它会将记录测试的持续时间和每个测试的持续时间,且会在测试完成后形成报告【事务数量、经过的时间、传输的字节数、响应时间、事务速率、并发数和服务器响应的OK次数】。
Siege 有三种模式【回归】【互联网模拟】和【暴力破解】;它可以从配置文件中读取大量 URL,并以增量(回归)或随机(互联网模拟)的方式运行它们。或者,用户可以简单地在命令行上使用运行时配置敲击单个 URL(暴力破解)。
siege主要是用来对 Web 服务器进行压力测试和基准测试;使用它来检测web服务器或API的性能和效率;提供了在受控时间段内访问web服务器API的模拟命中次数。
Siege 已在 AIX 4.x、GNU/Linux 2.2.x、HP-UX 11.x 和 Solaris 2.x 上编译和运行;Siege 依赖于以 UNIX 为中心的功能,因此,它不能直接在 Microsoft Windows 上运行,但你可以在 cygwin 下运行它。
二、Linux上安装部署压力测试工具siege
2.1、在Linux上安装部署siege
#安装部署压力测试工具Siege的实操流程#0-安装源码编译所需的常用依赖包
yum install -y gcc gcc-c++ wget popt-devel openssl openssl-devel#1-下载压力测试工具Siege源码包并解压(指定版本的源码包和最新版本的源码包只用二选一即可)
#下载指定版本的siege源码包
wget https://download.joedog.org/siege/siege-4.1.7.tar.gz -c 0 -P /data
#下载最新版本的siege源码包
wget https://download.joedog.org/siege/siege-latest.tar.gz -c 0 -P /data
cd /data
tar -zxvf siege-4.1.7.tar.gz#2-检查当前系统是否满足Siege的编译环境,且指定编译后的路径
cd /data/siege-4.1.7/
./configure --prefix=/usr/local/siege --with-ssl=/usr/local/openssl#3-编译安装Siege
make
make install#4-将压力测试工具Siege设置为全局可用
ln -s /usr/local/siege/bin/siege /usr/bin/siege#5-查看压力测试工具Siege的版本
siege -V#5-查看压力测试工具Siege的帮助
siege -h






2.2、siege的参数和报告内容说明
| 序号 | 压力测试工具Siege常用参数 | 说明 |
| 1 | -V | 显示版本号 |
| 2 | -h | 显示帮助信息 |
| 3 | -C | 显示当前配置信息 |
| 4 | -v | 在屏幕上打印通知 |
| 5 | -q | 安静模式,关闭详细信息抑制输出到屏幕上 |
| 6 | -g | 获取http头信息(适合应用程序调试) |
| 1 | -p | 显示整个页面内容 |
| 2 | -c NUM | 并发用户数量(默认10个) |
| 3 | -r NUM | 运行的次数 |
| 4 | -t NUMm | 持续测试的时间(秒(如10S),分钟(10M),小时(10H)) 【1H,表示一小时测试】 |
| 1 | -d NUM | 时间延迟,每次请求前的随机延迟 |
| 2 | -b | 基准测试,请求之间没有延迟(即:0延迟) |
| 3 | -i | 互联网用户模拟,随机点击网址。 |
| 4 | -f | 选择指定的URL文件 |
| 5 | -R | 指定siegerc文件 |
| 6 | -l --log | 运行结束,将统计数据保存到日志文件中siege .log, 默认位于【/usr/local/var/siege .log】中,也可在.siegerc中自定义 |
| 7 | -m | 用字符串标记日志文件。 在0.001的与指定的数值区间不计入统计 |
| 1 | -H | 给请求添加头信息,支持添加多个请求头信息 |
| 2 | -A | 给请求设置User-Agent |
| 3 | -T | 给请求设置Content-Type |
| 4 | -j | JSON 输出,将最终统计信息以 JSON 格式打印到标准输出 |
| 序号 | 压力测试工具Siege结果说明 | 说明 |
| 1 | Transactions | 命中的总次数 |
| 2 | Availability | 命中率 |
| 3 | Elapsed time | 整个压测花费的总时间(即:从第一个开始到最后一个结束的时间总合) |
| 4 | Data transferred | 整个压测数据传输的总大小 |
| 5 | Response time | 响应时间(即:响应每个模拟用户请求所花费的平均时间) |
| 6 | Transaction rate | 事务速率(即:服务器每秒能够处理的平均事务数量;事务除以经过的时间) |
| 7 | Throughput | 吞吐量(从服务器到所有模拟用户每秒传输的平均字节数) |
| 8 | Concurrency | 并发(同时连接的平均数量) |
| 9 | Successful transactions | 成功事务次数 |
| 10 | Failed transactions | 失败事务次数 |
| 11 | Longest transaction | 最长事务时间 |
| 12 | Shortest transaction | 最短事务时间 |
三、压力测试工具siege的常用示例
#压力测试工具Siege的常用示例
#1-实现200个并发对【http://192.168.1.226】发送1000次请求示例
siege -c 200 -r 1000 http://192.168.1.226#2-实现200个并发对【urls.txt】文件中的所有网址发送1000次请求示例
siege -c 200 -r 1000 -f urls.txt#3-实现200个并发对【urls.txt】文件中的随机选取的网址发送1000次请求示例
siege -c 200 -r 1000 -f urls.txt -i#4-实现0延迟200个并发对【urls.txt】文件中的随机选取的网址发送1000次请求示例
siege -c 200 -r 1000 -f urls.txt -i -b#5-发送post请求,在网址后添加POST地址,且POST后这是参数
siege -c 200 -r 1000 http://www.baidu.com/ POST k1=v1&k2=v2#6-实现200个并发对【http://192.168.1.226】发送1000次请求【指定请求头】
siege -c 200 -r 1000 -p --header="Authorization: Bearer f5c53ace-6d98-2a52-aeec-65eb07a30920" --header="sg: abc123456" http://192.168.1.226#7-实现200个并发对【http://192.168.1.226】网站发送1000次请求【以application/json方式请求】
siege -c 200 -r 100 "http://192.168.1.226:8086/blog/article/details PUT <./1.json "#8-基准测试示例
#8.1-实现100个并发线程(连接)测试基准测试【http://192.168.1.226】并持续120秒
siege -c 100 -t 120s http://192.168.1.226#8.2-实现不限制线程(连接)基准测试【http://192.168.1.226】并持续120秒
siege -b -t 120s http://192.168.1.226#8.3-实现100个并发线程(连接)测试基准测试【http://192.168.1.226】并持续120秒的日志输出到当前目录的log.txt文件中
siege -c 100 -t 120s http://192.168.1.226 > log.txt

