Siege是一款高性能的Http压力测试工具。
Siege支持身份验证、cookies、http、https和ftp等协议。它旨在让Web开发人员测量其代码的性能,以了解它如何在互联网上加载。它允许用户使用可配置数量的并发模拟用户访问Web服务器。性能测量包括测试的经过时间,传输的数据量(包括标头),服务器的响应时间,事务速率,吞吐量,并发性以及返回的确定次数。
下载Siege:http://download.joedog.org/siege/
我这里下载了最新的版本 siege-4.0.4.tar.gz
tar -xzvf siege-4.0.4.tar.gz
cd siege-4.0.4
./configure
make
make install
可以通过
siege -version
查看版本号
输入名称 | 解释说明 |
---|---|
-V, –version | 打印版本信息 |
-h, –help | 打印帮助信息 |
-C, –config | 显示配置信息 |
-v, –verbose | 打印冗余配置信息。 |
-g, –get | 显示HTTP交易。 |
-c, –concurrent=NUM | 设置并发用户数 |
-u, –url=”URL” | 设置被测Web的URL |
-i, –internet | 用户模拟、随机访问URL |
-b, –benchmark . | 基准测试。 |
-t, –time=NUM | 设置测试时间。 |
-r, –reps=NUM | 设置测试次数 |
-f, –file=FILE | 更改配置文件存档 |
-R, –rc=FILE | 更改siegerc文件和环境变量 |
-l, –log | 测试日志 |
-m, –mark=”text” | 标记测试日志 |
-d, –delay=NUM | 设置时间延迟 |
-H, –header=”text” | 增加测试头文件 |
-A, –user-agent=”text” | 设置代理测试请求 |
输出名称 | 解释说明 |
---|---|
Transactions | 访问次数 |
Availability | 成功次数 |
Elapsed time | 测试用时 |
Data transferred | 测试传输数据量 |
Response time | 平均响应时间 |
Transaction rate | 每秒事务处理量 |
Throughput | 吞吐率 |
Concurrency | 并发用户数 |
Successful transactions | 成功传输次数 |
Failed transactions | 失败传输次数| |
Longest transaction | 最长响应时间| |
Shortest transaction | 最短响应时间| |
siege默认只支持255个并发数,可以自己自定义,修改/root/.siege/siege.conf下的limit数值。
这边对需要简单参数的请求可使用一下命令进行测试
siege "http://localhost:8080/test POST {\"name\":\"songyaxu\"}" -r 5 -c 100
这边因为接口的原因无法使用重复参数测试,随意这边使用shell写了一个生产测试url的脚本。
#!/bin/bash
count=50
rm -r ./json*
for ((i = 1;i<=count;i++))
do
name="json"$i.json
touch $name
echo { >> $name
echo \"messageType\": 6, >> $name
echo \"data\": \"\{\\\"s\\\":\\\"sss\\\",\\\"status\\\":1,\\\"name\\\":\\\"songyaxu\\\"\}\", >> $name
echo \"callback\": [ >> $name
echo { >> $name
echo \"name\":\"bbbz\", >> $name
echo \"url\": \"http://localhost:8080/postFail\", >> $name
echo \"method\": \"post\", >> $name
echo \"headers\": { >> $name
echo \"content-type\": \"application/x-www-form-urlencoded\" >> $name
echo } >> $name
echo } >> $name
echo ], >> $name
echo \"sendCallback\":{ >> $name
echo \"name\":\"bbbz\", >> $name
echo \"url\": \"http://localhost:8080/postFail4\", >> $name
echo \"method\": \"post\", >> $name
echo \"headers\": { >> $name
echo \"content-type\": \"application/x-www-form-urlencoded\" >> $name
echo } >> $name
echo }, >> $name
echo \"uniqueKey\":\""key"$i\", >> $name
echo \"canceledUniqueKeyList\":[\"zzz3\",\"zzz4\"], >> $name
echo \"timeStamp\":\"2019-09-04 18:30:00\", >> $name
echo \"retryPolicy\":1 >> $name
echo } >> $name
echo "正在创建第"$i"个文件"
done
echo "创建请求文件urls.txt"
touch urls.txt
for (( i = 1; i <= count ; i++ ))
do
echo http://localhost:8080/test/test POST \<./json$i.json >> urls.txt
done
echo "successful!!!"
这里通过count可以创建不同数量的请求参数。
通过以下方式进行测试。
siege -c 100 -r 1 -f ./urls.txt