基准测试工具-wrk / wrk2 / ab

image.png

wrk

简介

wrk 是一个HTTP基准测试工具,当在单核CPU上运行时能够产生显著的负载。它将多线程设计与可扩展的事件通知系统(如epoll和kqueue)相结合。

可选的LuaJIT脚本可以执行HTTP请求生成、响应处理和自定义报告。

安装

mac下安装

1
brew install awk

image.png

linux下安装

教程

1
wrk2 -t8 -c1000 -d30 -R1000 --latency https://www.baidu.com/

测试服务的最大QPS

通过-R参数获取吞吐量参数 每秒请求量的结果

1
2
3
4
5
wrk2 -t10 -c50 -d30 -R3000 -H “Host:xxx.com” http://localhost/a/a.mp4 -L	Requests/sec: 3000.12
wrk2 -t10 -c50 -d30 -R5000 -H “Host:xxx.com” http://localhost/a/a.mp4 -L Requests/sec: 5000.12
wrk2 -t10 -c50 -d30 -R10000 -H “Host:xxx.com” http://localhost/a/a.mp4 -L Requests/sec: 9800.12
wrk2 -t10 -c50 -d30 -R20000 -H “Host:xxx.com” http://localhost/a/a.mp4 -L Requests/sec: 12500.12
wrk2 -t10 -c50 -d30 -R30000 -H “Host:xxx.com” http://localhost/a/a.mp4 -L Requests/sec: 13000.12

从以上的测试过程中可以看出,服务最大的每秒请求量为13000,可见性能压测的QPS为1.3万左右,考虑本机测试性能损耗问题,即QPS>1.2万

TODO

wrk2

简介

wrk2 是对 wrk 进行了改进,以产生恒定的吞吐量负载,并将延迟细节精确到高9(即,当运行足够长的时间时,可以产生精确的99.9999%)。除了wrk的参数外,wrk2还通过–rate或-R参数(默认值为1000)获取吞吐量参数(以每秒请求总数为单位)。

安装

教程

ab - Apache HTTP server benchmarking tool

简介

安装

教程

总结

  1. wrk 默认使用的是http1.1,会使用连接复用,其中-c参数并不会每次发请求都会重新进行建立tcp连接,所以测试的数据需要注意这一块。
  2. ab 缺省会每次都新建请求连接来进行测试,如果需要保持长连接需要加入 -k 参数。

资料

  1. wrk:https://github.com/wg/wrk
  2. https://github.com/giltene/wrk2
  3. https://github.com/rakyll/hey
  4. https://github.com/tsenart/vegeta

基准测试工具-wrk / wrk2 / ab
https://mikeygithub.github.io/2024/02/09/yuque/基准测试工具-wrk!wrk2!ab/
作者
Mikey
发布于
2024年2月9日
许可协议