资讯动态

如何用Hey做并发与限流HTTP压测:-n、-c、-q、-z的12个实战命令示例

发布时间:2026/9/20 23:47:30 来源:尧图企业网站定制
如何用Hey做并发与限流HTTP压测-n、-c、-q、-z的12个实战命令示例【免费下载链接】heyHTTP load generator, ApacheBench (ab) replacement项目地址: https://gitcode.com/gh_mirrors/he/heyHey 是一款小巧而强大的HTTP 压测工具HTTP load generator可视为 ApacheBenchab的现代替代者。它用 Go 编写支持高并发请求、QPS 限流、按持续时长压测并自动输出响应时间直方图与延迟分布。本文面向新手用12 个实战命令示例带你掌握-n、-c、-q、-z四个核心参数快速上手 HTTP 负载测试。为什么选择 Hey 做 HTTP 压测相比传统工具Hey 的优势在于一行命令出报告总耗时、最快/最慢/平均响应、每秒请求数RPS、响应时间直方图、百分位延迟P10~P99一次给全⚙️两种压测模式按总请求数压测或按持续时长压测满足不同场景️支持 QPS 限流可以模拟稳定流量而非打满服务器支持 HTTP/2加一个-h2参数即可CSV 输出方便导入 Excel 或监控系统做二次分析。参数定义位于 hey.go完整帮助信息可在 README.md 中查阅。四大核心参数速览参数含义默认值-n总请求数200-c并发 worker 数50-q每个 worker 的 QPS 限流不限速-z压测持续时长如10s、3m0不启用三条关键规则源码见 hey.go总请求数-n不能小于并发数-c一旦指定-z-n会被忽略请求数变为尽可能多-q是每个 worker的限流速度整体 QPS ≈-q × -c。12 个实战命令示例以下示例以https://api.example.com/users为目标地址请替换为你自己的接口。一、并发压测用 -n 和 -c 控制压力示例 1默认参数快速探活hey https://api.example.com/users不做任何配置时Hey 默认发送 200 个请求、50 个并发见 hey.go。适合作为新接口的第一枪冒烟测试。示例 21000 请求 × 100 并发hey -n 1000 -c 100 https://api.example.com/users这是最经典的压测组合100 个 worker 各发约 10 个请求请求数会在并发间均分逻辑见 requester/requester.go。示例 3低并发基线测试hey -n 100 -c 10 https://api.example.com/users先用低并发拿到健康基线再逐步加压对比是容量评估的标准姿势。示例 4逐步加压对比hey -n 500 -c 50 https://api.example.com/users hey -n 1000 -c 100 https://api.example.com/users hey -n 2000 -c 200 https://api.example.com/users连续跑三档并发观察 RPS 与 P99 延迟的变化曲线找到性能拐点。二、限流压测用 -q 控制 QPS示例 5每 worker 限速 10 QPShey -q 10 -c 5 https://api.example.com/users5 个 worker × 每个 10 QPS ≈ 系统整体 50 QPS 的稳定流量。限流实现是通过时间切片ticker逐个放行请求源码见 requester/requester.go。示例 6限流 固定时长压测hey -q 10 -c 5 -z 30s https://api.example.com/users官方 README 推荐的标准限流姿势见 README.md30 秒内以约 50 QPS 稳定压测非常适合验证限流器/网关在真实流量速率下的表现。示例 7模拟突发流量峰值hey -q 100 -c 20 -z 10s https://api.example.com/users20 个 worker 各 100 QPS ≈ 2000 QPS 瞬时峰值只持续 10 秒可模拟秒杀、活动开抢等尖峰场景。三、按时长压测用 -z 替代 -n示例 8压测 30 秒hey -z 30s https://api.example.com/users指定-z后 Hey 以最大并发能力跑满 30 秒默认 50 并发-n自动忽略见 hey.go。时长格式支持s秒、m分。示例 92 分钟稳态压测hey -c 100 -z 2m https://api.example.com/users较长时间的高并发稳态测试用于观察内存泄漏、连接池耗尽等跑久才暴露的问题。中途可按CtrlC优雅停止Hey 仍会输出已完成部分的统计报告信号处理见 hey.go。示例 10限流 长时间稳态hey -q 20 -c 10 -z 5m https://api.example.com/users以 200 QPS 恒定流量压测 5 分钟模拟生产环境的常态化流量是发布前回归验证的好选择。四、进阶组合输出与方法定制示例 11CSV 导出便于分析hey -n 1000 -c 50 -o csv https://api.example.com/users result.csv每个请求一行记录总耗时、DNS拨号、DNS、请求写入、首字节延迟、响应读取、状态码、偏移时间列说明见 requester/print.go。配合 Excel 即可绘制延迟曲线。示例 12POST 接口压测hey -m POST -d {name:demo} -T application/json \ -n 500 -c 50 https://api.example.com/users对写接口压测时记得指定方法与请求体若接口需要鉴权追加-H Authorization: Bearer token自定义请求头即可Header 可重复指定帮助文档见 README.md。加分参数加-h2可开启 HTTP/2 压测加-disable-keepalive可强制每次新建连接观察连接建立开销。读懂 Hey 的压测报告压测结束后Hey 会输出如下关键信息模板见 requester/print.go统计逻辑见 requester/report.goSummary: Total: 12.3540 secs Slowest: 0.1842 secs Fastest: 0.0101 secs Average: 0.0243 secs Requests/sec: 80.9462 Response time histogram: ... Latency distribution: 10% in 0.0125 secs 50% in 0.0221 secs 99% in 0.0980 secs新手建议重点关注四项指标Requests/sec系统实际吞吐99% in X secsP99 延迟比平均值更能反映用户体验resp wait等待首字节时间反映服务端处理耗时Status code distribution出现大量非 2xx 说明服务已扛不住。常见问题速答Q-n和-c有约束关系吗有。-n不能小于-c否则 Hey 会直接报错退出校验逻辑在 hey.go。Q-q是总 QPS 还是单 worker 的 QPS是每个 worker的 QPS。总 QPS ≈-q × -c。Q指定-z后-n还生效吗不生效。指定时长后Hey 会一直发请求直到时长结束见 hey.go。Q如何安装 HeymacOS 可用 Homebrew 安装brew install heyLinux/Windows 可直接下载预编译二进制或从源码构建构建方式见 Makefile容器化部署见 Dockerfile。总结Hey 用四个参数就能覆盖绝大多数 HTTP 压测场景-n-c按总量和并发加压找性能拐点-q按 QPS 限流模拟真实流量速率-z按时长压测观察稳态表现配合-o csv与-h2报告可导出、协议可扩展。从示例 1 的默认探活开始逐步叠加参数10 分钟你就能完成一次专业的 HTTP 压测并拿到可汇报的延迟报告。【免费下载链接】heyHTTP load generator, ApacheBench (ab) replacement项目地址: https://gitcode.com/gh_mirrors/he/hey创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价