压测工具Fortio的使用
Fortio是一个快速,小巧的压测工具,带有控制台命令和UI服务。
github地址:https://github.com/fortio/fortio
安装
- docker安装
docker run -p 8080:8080 -p 8079:8079 fortio/fortio server & # For the server
docker run fortio/fortio load -logger-force-color http://www.google.com/ # For a test run, forcing color instead of JSON log output
-
从源码安装
- 安装go
go install fortio.org/fortio@latest- 执行
fortio
-
windows上安装
从 https://github.com/fortio/fortio/releases/download/v1.69.5/fortio_win_1.69.5.zip 下载压缩包,解压后得到fortio.exe
执行命令fortio server,即可通过 http://localhost:8080/fortio/访问ui页面
命令行参数
几个子命令
- load http或者gRPC的压测命令
- server 启动一个http后台服务,web UI,TCP/UDP echo,代理,https重定向等功能
- grpcping grpc ping信息
- curl 单次url请求命令
- nc 建立单个tcp或者udp连接
- redirect 重定向
- tcp-echo tcp echo
- report json数据的浏览和图表化
- script 以交互的方式执行load
load命令的几个重要参数:
| 参数 | 描述 |
|---|---|
| -qps rate | 所有请求的每秒请求数 |
| -nocatchup | 当服务落后然后恢复时,不要试图通过加快速度来达到目标qps。使QPS成为一个绝对的上限,即使服务的延迟出现一些峰值,fortio也不会补偿(但也不会给目标带来超过设定QPS的压力)。 |
| -c connections | 并行同时连接的数量(以及匹配的go例程) |
| -t duration | 测试执行时间,0表示遇到^C才停止 |
| -n numcalls | 执行指定次数的请求,默认0 表示使用-t参数 |
| -payload str or -payload-file fname | 使用POST请求,并带上指定的payload |
| -uniform | 在线程之间及时分散调用,以实现更均匀的调用分布。与-nocatchup结合使用效果更好。 |
| -r resolution | 直方图最低桶的分辨率(默认值为0.001,即1ms),使用预期典型延迟的十分之一 |
| -H "header: value" | 添加header |
| -a | 根据标签和时间戳自动保存JSON结果和文件名 |
| -json filename | 文件名,或者使用-在控制台输出结果(默认情况下,相对于-data-dir,如果你想让fortio报告显示它们,应该以.JSON结尾;使用-a通常是更好的选择) |
| -labels "l1 l2 ..." | 要添加到生成的JSON中的其他配置数据/标签,默认为目标URL和hostname |
| -h2 | 客户端调用将尝试使用HTTP/2而不是HTTP/1.1 |
| -X method | 指定http method |
| -logger-force-color | 用于彩色而非JSON输出的交互式运行 |
| -logger-no-color | 即使从终端运行,也强制JSON输出 |
服务url和特性
- 一个简单的echo服务,返回任何提交的数据
例如curl -d abcdef http://localhost:8080/返回abcdef
支持的请求参数:
| 参数 | 描述 |
|---|---|
| delay | 延迟返回,可以时一个值或者通过逗号分隔;例如,延迟=150us:10,2ms:5,0.5s:1表示有10%的概率延迟150us,5%的概率延迟2ms,1%的概率延迟1/2秒 |
| status | 返回HTTP状态,而不是200。可以是单个值或逗号分隔的概率列表,例如,状态=404:10503:5429:1表示404状态的10%概率、503状态的5%概率和429状态的1%概率 |
| size | 要回复而不是回显输入的有效载荷的大小。也可用作概率列表。size=1024:10512:5 10%的响应将是1k,5%将是512字节的有效载荷,REST默认为回显。 |
| close | 在应答后关闭套接字,例如,close=true表示在所有请求后关闭,或close=5.3表示在大约5.3%的请求后关闭 |
| header | 要添加到回复中的header,例如,&header=Foo:Bar&header=X:Y |
| gzip | 如果Accept-Encoding:gzip由调用者/客户端在头文件中传递;如果查询参数中有gzip=true,则所有响应都将被gzip压缩;或者如果gzip=42.7被传递,大约42.7%将 |
/debug将以纯文本形式回显请求,以便人工调试。/fortio/UI地址- DNS调试
/fortio/rest/dns?name=x

浙公网安备 33010602011771号