Siege的Web压力测试
安装方式一
wget http://download.joedog.org/siege/siege-latest.tar.gz
或wget https://blog.ossq.cn/wp-content/uploads/2022/11/siege-latest.tar.gz
tar zxf siege-latest.tar.gz
cd siege-4.1.5/
./configure
make & make install
安装方式二
yum install siege
或者
apt install siege
查看是否安装成功:
查看siege安装路径:
$ which siege
/usr/local/bin/siege
查看siege版本:
$ siege -V
SIEGE 4.1.5
GET 请求方式调用
单条地址 重复测试:
siege -r 10 -c 25 http://ossq.cn:/xxx?user=10
文件测试:文件里面准备好的多条访问地址(类似于上述的url后跟参数),可以通过参数控制选择是逐条测试或者随机测试:
siege -c 15 -r 50 -b -f test_file &> log.press.$RANDOM &
POST请求方式调用
单条地址 重复测试:
siege -H "Content-Type:application/json" -c 10 -r 10 http://0.0.0.0:5000/xxx POST p1=v1&p2=v2
json文件测试
# 新建json文件
# 1.vim test.json
{
"p1": p1,
"p2": p2
}
# 2. 测试语句
# 每秒10个并发跑10次 test.json 为发送的数据内容
siege -H "Content-Type:application/json" -c 10 -r 10 'http://0.0.0.0:5000/xxx POST < /tmp/test.json'
注意: 如果url中含有空格和中文,要先进行url编码,否则siege发送的请求url不准确
测试开始
siege -c 100 -r 10 -f urls.txt
-c | 并发数 |
-r | 重复次数 |
被测试的服务器日志
CPU占用量
监控显示
测试结果
结果参数介绍
-c 25: 25 个仿真用户, -r 10: 每个用户请求的次数;
Transactions:服务器受到的请求次数;
Elapsed time: 整个测试阶段总耗时;
Data transferred:每个仿真用户传输数据大小的总和;
Response time:每次请求耗时的平均时间;
Transaction rate: 服务器每秒能够处理的请求数量;
Throughput: 服务器每秒传输的字节数;
Concurrency: 平均同时连接数;
Successful transactions: 成功连接次数;
Failed transactions: 失败连接次数;
Longest transactions:最长的一次请求时间;
Shortest transactions:最短的一次请求时间;
总结
这个用于GET测试带宽是否足够,更加直观。POST测试数据库并发更加直观。