wrk 快速压测

wrk 是轻量 HTTP 压测工具:-t 线程、-c 连接、-d 时长、--latency 输出延迟分布;适合对单接口快速摸底,配合 Lua 脚本可参数化与自定义上报。

软件测试速查开发更新于 2026-10-13

wrk 是什么

wrk 是轻量级 HTTP 压测工具:C 语言编写、基于事件驱动加多线程,单机可以产出很高的请求速率,用一条命令就能完成快速基准测试,还支持 Lua 脚本定制请求与校验。它适合压测路径简单、追求高吞吐的接口,缺点是复杂业务场景编排能力弱,统计维度也比专业压测平台简单。

基本信息

基本用法wrk -t 线程数 -c 连接数 -d 时长 URL
脚本扩展Lua 脚本定制请求方法、头部、请求体与响应校验
延迟统计输出延迟分布与每秒请求数,默认只报聚合结果
适用协议HTTP 与基础 HTTPS,不含复杂业务链路编排
运行环境Linux 与 macOS 常用;Windows 支持较弱
配合工具需要分位明细时输出原始数据交给分析脚本

常用命令与输出

常用命令与输出
wrk -t4 -c200 -d30s https://api.example.com/health
# 4 线程、200 并发连接、持续 30 秒

# 输出读法:
# Latency 延迟分布(平均与分位)
# Req/Sec 每秒完成请求数(每线程与合计)
# Socket errors 连接类错误,非零先查压力机与网络
# 定制脚本:wrk -s post.lua -t2 -c50 -d1m URL

典型使用场景

  • 接口基准:快速摸清单个接口的吞吐上限与延迟水平。
  • 优化验证:改动前后各跑一轮,对比吞吐与分位延迟变化。
  • 压力机校准:验证测试机自身能产出多高的请求速率。
  • 网关与代理:对比接入层处理开销,定位额外延迟来源。
  • 日常巡检:脚本化短跑,观察核心接口性能趋势。

输出项读法

输出项含义关注点
Latency请求延迟分布看分位,均值会掩盖长尾
Req/Sec每秒请求数结合并发算人均吞吐
Requests/sec总吞吐与目标容量对照
Socket errors连接错误计数非零先排查环境与端口
Non-2xx非成功响应数区分业务拒绝与故障
wrk 默认复用连接:测的是长连接场景的吞吐,需要验证建连开销时用脚本控制连接行为。
单机测 HTTPS 成本高:TLS 握手与加密开销会先吃满压力机 CPU,注意区分瓶颈归属。
对生产动手要审批:wrk 瞬时高并发容易触发防护与告警,先在预发演练并通知相关方。

易错点

  • 只看平均延迟:长尾被掩盖,线上超时比例高的真相测不出来。
  • 连接数拍脑袋:过高连接先把压力机端口耗尽,报告里全是 socket errors。
  • 拿 wrk 测复杂场景:需要登录态与多步依赖的业务编排它并不擅长。
  • 忽略环境差异:在办公网测出的吞吐与机房内网差距大,结论迁移需谨慎。
  • 不隔离被测环境:共享环境邻居流量混入,结果无法复现。

数据来源与参考

  • wrk 项目文档(github.com/wg/wrk)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌