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 瞬时高并发容易触发防护与告警,先在预发演练并通知相关方。