ysab是一款基于Golang语言开发的压测工具,类似于Apache的ab工具,不同的是它支持批量发送不同参数的请求,方便重放线上请求,获取http服务器相关性能数据。该工具核心利用的goroutine和channel。


项目地址

Ysab:https://github.com/yunsonbai/ysab

功能介绍

  • 发送单条url

  • 发送多条url

  • 支持GET、POST、PUT、DELETE

获取和安装

  • step 1:

    • Linux: wget https://github.com/yunsonbai/ysab/releases/download/v0.1/ysab_Linux_0.1.tgz

    • MacOS: wget https://github.com/yunsonbai/ysab/releases/download/v0.1/ysab_macOS_0.1.tgz

  • 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在同一压测中。

  • 关于urls.txt

  • 无body样例:

    https://github.com/yunsonbai/ysab/blob/master/examples/urls.txt

    有body样例:

    https://github.com/yunsonbai/ysab/blob/master/examples/urls2.txt