wrk 使用教程

wrk 使用教程

wrk轻量、高性能的 HTTP 压测工具,基于多线程 + 异步 IO,比 ab、JMeter 更简单高效,适合测试接口/网站的并发承载能力。

一、先安装 wrk

macOS

bash 复制代码
brew install wrk

Ubuntu/Debian

bash 复制代码
sudo apt-get install wrk

CentOS/RHEL

bash 复制代码
sudo yum install wrk

Windows 可使用 WSL 或 Docker 运行。


二、最基础用法

bash 复制代码
wrk -t 线程数 -c 连接数 -d 压测时间 测试URL

最简示例(最常用)

bash 复制代码
wrk -t4 -c100 -d30s http://127.0.0.1:8080/
  • -t4:使用 4 个线程(一般 = CPU 核心数)
  • -c100:模拟 100 个并发连接
  • -d30s:压测 30 秒
  • 最后直接跟要压测的地址

三、常用参数说明

参数 作用
-t <num> 线程数(推荐 = CPU 核心数)
-c <num> 总并发连接数
-d <time> 压测时长,如 2s10s2m
-H <header> 添加请求头
-m <method> 指定请求方法(GET/POST/PUT...)
-s <script.lua> 使用 Lua 脚本(支持 POST、自定义请求)
-R <rate> 限制每秒请求数(限流压测)

四、常用实战命令

1. GET 接口压测(带请求头)

bash 复制代码
wrk -t4 -c200 -d10s -H "Token: abc123" -H "Accept: application/json" http://127.0.0.1:8080/api/user

2. POST 接口压测(必须用 Lua 脚本)

新建 post.lua

lua 复制代码
wrk.method = "POST"
wrk.headers["Content-Type"] = "application/json"
wrk.body = '{"username":"test","password":"123456"}'

执行:

bash 复制代码
wrk -t4 -c100 -d10s -s post.lua http://127.0.0.1:8080/api/login

3. 限流压测(固定 QPS)

bash 复制代码
wrk -t4 -c100 -d10s -R 500 http://127.0.0.1:8080/
  • -R 500:每秒最多发 500 请求

五、结果怎么看

运行后会输出:

复制代码
Running 30s test @ http://127.0.0.1:8080/
  4 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     10.2ms    5.1ms    50.3ms   90.12%
    Req/Sec     5.2k     1.1k    10.0k    85.23%
  931230 requests in 30.00s, 122.10MB read
Requests/sec:  31041.00  # QPS(核心指标)
Transfer/sec:  4.07MB/s

重点看 2 个值:

  • Requests/sec每秒请求数(QPS)
  • Latency接口平均响应时间

六、小技巧

  1. 线程数 -t 建议设置为 CPU 核心数
  2. 并发 -c 一般比线程数大(如 4 线程 → 100~500 连接)
  3. 压测前关闭本机防火墙、占用带宽的程序
  4. 服务端和压测机不要同一台机器,否则数据不准
  5. 需要复杂压测(登录、参数化、多接口)用 Lua 脚本

总结

  • 基础命令:wrk -t4 -c100 -d30s URL
  • GET 加头:-H "Key: Value"
  • POST 必须用 -s script.lua
  • 核心指标:QPS、平均延迟

wrk 本身不直接生成可视化测试报告 ,但可以通过输出日志 + 简单解析/格式化 得到标准压测报告,下面分两种方案:纯文本日志报告(即用即走)简易格式化报告,附模板、实操命令和报告解读。

一、方案1:保存原始压测日志(最常用)

直接把 wrk 输出重定向到文件,就是原始测试报告。

1. 基础 GET 压测 + 保存报告

bash 复制代码
# 格式:wrk 参数 URL > 报告文件名.txt
wrk -t4 -c200 -d30s http://127.0.0.1:8080/api > wrk_report_get.txt

2. POST 脚本压测 + 保存报告

bash 复制代码
# 结合 lua 脚本,输出到报告文件
wrk -t4 -c200 -d30s -s post.lua http://127.0.0.1:8080/api/login > wrk_report_post.txt

运行后当前目录会生成 .txt 文件,可直接作为原始测试报告


二、方案2:结构化测试报告模板(可直接上交)

报告头部(手动填写基础信息)

复制代码
=============================================
HTTP 接口压测报告
工具:wrk
压测时间:YYYY-MM-DD HH:mm:ss
被测接口:http://xxx.xxx.xxx/api
请求方式:GET / POST
线程数(t):4
并发连接数(c):200
压测时长(d):30s
请求头/请求体:(按需填写)
=============================================

三、wrk 输出字段释义(报告核心解读)

以典型输出为例:

复制代码
Running 30s test @ http://127.0.0.1:8080/api
  4 threads and 200 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     8.5ms    3.2ms   42.1ms   92.30%  # 响应延迟
    Req/Sec     12.6k   890.00    15.2k    88.10%  # 单线程每秒请求
  368920 requests in 30.00s, 48.60MB read
Requests/sec:  12297.33        # 【核心QPS】总每秒请求数
Transfer/sec:  1.62MB/s        # 每秒数据传输量

报告关键指标说明(写入报告)

  1. Latency(响应延迟)
    • Avg:平均响应时间
    • Max:最大响应时间
  2. Requests/sec:整体 QPS,接口吞吐能力核心指标
  3. 总请求数:压测周期内成功请求总量
  4. 错误说明 :若有超时/失败,wrk 会显示 Socket errors,代表接口异常

四、进阶:过滤错误、精简报告

只保留核心数据,过滤冗余信息:

bash 复制代码
wrk -t4 -c200 -d30s URL | grep -E "Latency|Req/Sec|Requests/sec|Transfer/sec" > report_simple.txt

五、完整示例(一份成品简易报告)

复制代码
=============================================
HTTP接口压测报告
压测工具:wrk
压测时间:2026-06-10 15:30:00
被测接口:http://127.0.0.1:8080/api/login
请求方式:POST
压测配置:线程4、并发200、时长30秒
请求体:{"username":"test","pwd":"123456"}
=============================================
【性能指标】
平均响应延迟:8.5ms
最大响应延迟:42.1ms
整体QPS:12297.33
每秒传输流量:1.62MB/s
总请求量:368920
【测试结论】
接口在200并发下运行稳定,无连接错误,响应速度正常。

补充

  1. 如果需要 HTML/图表报告 :wrk 原生不支持,可结合 wrk2csv + Python/Excel 绘图,日常接口压测用上面文本报告足够。
  2. 多次梯度压测(50/100/300 并发):分别保存不同文件,做多组对比报告即可。
相关推荐
我的xiaodoujiao20 小时前
API 接口自动化测试详细图文教程学习系列25--继续处理testCase中的数据
python·学习·测试工具·pytest
сокол1 天前
【网安-研判-WireShark流量分析】网页、RAT、FTP、垃圾邮箱的流量过滤规则实战
网络·测试工具·wireshark
川石课堂软件测试1 天前
UI自动化测试|XPath元素定位实践
功能测试·测试工具·jmeter·microsoft·ui·postman·harmonyos
IT界的老黄牛1 天前
手机 Chrome 远程调试实战:adb + DevTools,localhost 就是你的测试服
chrome·测试工具·adb
сокол1 天前
【网安-研判-WireShark流量分析】HTTPS流量解密
测试工具·https·wireshark
川石课堂软件测试1 天前
UI自动化测试|CSS元素定位实践
css·测试工具·ui·fiddler·单元测试·appium·harmonyos
可可南木2 天前
3070文件格式--21--fixture文件 3
功能测试·测试工具
一只小白0002 天前
【JVM | 第五篇】—— 深入理解垃圾回收
jvm·测试工具