引言
最近需要测试一个服务的性能,要求是重放线上真实请求(请求参数不一致)。
比较常用的就是Apache的ab压测工具,如果想发送不同参数的请求需用脚本写for循环。
最后用Golang实现了类似于ab的压测工具ysab,支持一次压测发送不同url、参数的功能。
项目地址
功能介绍
- 发送单条url
- 发送多条url
- 支持GET、POST、PUT、DELETE
获取和安装
-
step 1:
-
step 2:
- tar -zxvf ysab_x_x.tgz
-
step 3:
- mv ysab /usr/bin/
部分例子
- 1: ysab -n 900 -r 30 -u http://10.10.10.10:8080/test
- 2: ysab -n 900 -urlsfile ./examples/urls.txt
- 3: ysab -n 900 -r 30 -u http://10.10.10.10:8080/add -d '{"name": "yunson"}'
- 4: ysab -n 900 -urlsfile -m POST ./examples/urls2.txt
结果展示
说明:http://10.10.10.10:8080/test是基于gin写的一个api,简单的返回hello world
[yunson ~]# ysab -n 900 -r 30 -u http://10.10.10.10:8080/test
Summary:
Complete requests: 27000
Failed requests: 0
Total data size(ContentLength): 324000
Data size/request: 12
Max use time: 257 ms
Min use time: 10 ms
Average use time: 36.074 ms
Requests/sec: 13500
QPS time histogram (timestamp: requests):
1551254255: 14198
1551254256: 12802
Use Time Percent:
<=50ms: 87.74%
<=100ms: 99.31%
<=300ms: 100.00%
<=500ms: 100.00%
>500ms: 0.00%
Code Time histogram (code: requests):
200: 27000
Time detail (ms)
item min mean max
dns 0 0 0
conn 0 1.088 51
wait 10 33.82 257
resp 0 0.596 28
其他说明
- 关于命令urlsfile
推荐尝试使用 "-urlsfile" 命令,这样你可以发送不同url在同一压测中。