今天突然想测一下一个Web应用程序的性能,本来想用WebBench,但发现其并不支持POST方法的压测,故而只能放弃。经过一番搜索,发现另一个和WebBench一样简单易用的压测工具——Siege。
软件主页是https://www.joedog.org/,可以自己下载源码编译安装,也可以用Linux系统上的包管理工具安装。
下表是部分参数的中文描述1:
Parameter | Description |
---|---|
-C或-config | 在屏幕上打印显示出当前的配置,配置是包括在他的配置文$HOME/.siegerc中,可以编辑里面的参数,这样每次siege 都会按照它运行. |
-v | 输出版本信息和siege一些命令 |
-c n或-concurrent=n | 模拟n个用户同时并发访问;n不要设置的太大,因为越大,siege消耗的资源就更多 |
-i 或 -internet | 随机访问urls.txt中的url列表项,以此模拟真实的访问情况(随机性) |
-d n 或 -delay=n | hit每个url之间访问的延迟,在0-n之间;一般该参数不会>10 |
-b 或 --benchmark | BENCHMARK模式,请求之间没有延迟 |
-r n 或 -reps=n | 重复运行测试n次,不能与-t同时设置 |
-t n 或 -time=n | 持续运行siege n秒,如10S(秒),10M(分钟),10H(小时) |
-l | 运行结束,将统计数据保存到日志文件中siege.log,可通过siege -C查看siege.log的具体位置,也可在配置文件中自定义 |
-R SIEGERC 或 -rc=SIEGERC | 指定用特定的siege配置文件来运行,默认为$HOME/.siegerc |
-f file 或 -file=FILE | 指定urls文件来运行 |
-u URL 或 -url=URL | 测试指定的url |
报告的测试数据如下2:
名称 | 说明 |
---|---|
Transactions: | 100 hits (完成100个请求) |
Availability: | 100.00 %(100%的成功率) |
Elapsed time: | 10.97 secs(总共使用时间) |
Data transferred: | 0.54 MB(总共传输数据) |
Response time: | 0.17 secs(响应时间) |
Transaction rate: | 9.12 trans/sec(平均每秒完成的处理) |
Throughput: | 0.05 MB/sec(平均每秒传送的数据) |
Concurrency: | 1.58(实际最高并发数) |
Successful transactions: | 100(成功处理次数) |
Failed transactions: | 0(失败处理次数) |
Longest transaction: | 3.09(每次传输花费的最长时间) |
Shortest transaction: | 0.03(每次传输花费的最短时间) |
siege -c 100 -t 50S "http://192.168.50.87:8080/json POST < ./query.json"
(注意json文件中的内容不能是普通的字符串)siege -c 100 -t 50S "http://192.168.50.87:8080/json POST {\"key\": \"value\"}"
(注意对双引号进行转义)siege -c 100 -t 50S "http://192.168.50.87:8080/json POST p1=v1&p2=v2"
《压测工具siege的简单使用》https://www.jianshu.com/p/516463003fdc ↩︎
《siege压测工具的安装与使用》http://blog.51cto.com/mengphilip/1725787 ↩︎
《如何使用web api测试工具siege和ab的post方法来发送json数据》https://blog.csdn.net/xuriwuyun/article/details/12711927 ↩︎
《Web性能压力测试工具——Siege详解》https://blog.csdn.net/winsonyuan/article/details/52786368 ↩︎