☰
Hey压测清单:从环境准备到结果归档的8个标准步骤(附检查表)
2026/10/1 16:09:05 网站建设 项目流程

Hey压测清单:从环境准备到结果归档的8个标准步骤(附检查表)

【免费下载链接】heyHTTP load generator, ApacheBench (ab) replacement项目地址: https://gitcode.com/GitHub_Trending/he/hey

Hey 是一款轻量级的HTTP 压测工具(HTTP load generator),也是 ApacheBench(ab)的现代化替代品。它用一条命令就能发起并发请求,并自动输出响应时间直方图、延迟分布(P50/P95/P99)和状态码统计。本文将 hey 压测拆成8 个标准步骤,并附一份可对照执行的检查表,帮助新手快速完成一次规范的接口压测。

1. 环境准备:安装 Hey 压测工具

开始压测前,先确认压测机已装好 hey。支持三种安装方式:

方式适用平台说明
直接下载二进制Linux / macOS / Windows官方发布单文件,无需依赖
HomebrewmacOS执行brew install hey
Docker 镜像所有平台基于 Dockerfile 构建,自带 CA 证书,以非 root 用户运行

如果从源码构建,Makefile 中已提供release目标,可一键交叉编译出 Windows、Linux、macOS 三个平台的可执行文件。

💡 检查点:压测机与被测服务之间网络畅通,且压测机 CPU 不是瓶颈。hey 默认使用 8 核(-cpus可调,见 hey.go),核数不足时结果会失真。

2. 基线测试:用默认参数发一次"小炮"

正式加压前,先用默认参数对目标 URL 打一次请求,验证连通性、认证和状态码是否正常。hey 默认发送 200 个请求、50 并发(默认值定义见 hey.go)。

这一轮只回答两个问题:

  1. 能否正常访问(状态码是否全为 200)?
  2. 平均延迟处于什么量级?

3. 确定压测模型:n、c、q、z 四参数

hey 通过四个核心参数描述压力模型:

  • -n:总请求数(默认 200)
  • -c:并发 worker 数(默认 50,且必须 ≤-n)
  • -q:每个 worker 的 QPS 限速
  • -z:持续时长,如-z 30s;指定后忽略-n

经验法则:先按业务峰值预估 QPS,再换算并发数 ≈ 目标QPS × 平均响应时间。如果只想"稳定跑 30 秒",用-z 30s最省心。参数校验逻辑(如-n不能小于-c)见 hey.go。

4. 配置请求细节:方法、请求头与鉴权

真实接口往往带自定义请求头、请求体或 Basic Auth。常用参数:

参数作用
-m指定 HTTP 方法(POST/PUT/DELETE 等)
-H自定义请求头,可重复使用
-d/-D内联请求体 / 从文件读取请求体
-aBasic 认证user:pass
-t单请求超时秒数(默认 20,0为无限)
-h2启用 HTTP/2

⚠️ 压写接口(POST/DELETE)前务必确认目标是测试环境,并准备好回滚方案。

5. 正式压测:执行与监控

执行压测命令后,hey 会实时占用并发资源发起请求。测试期间建议在服务端同步观察:CPU、内存、连接池、错误率。测试中可随时Ctrl+C中断——hey 注册了信号处理,收到中断后会停止请求并输出已收集的数据(见 hey.go)。

6. 解读报告:关注这 4 组数字

hey 的汇总报告由 requester/report.go 与 requester/print.go 生成,包含:

  • Requests/sec:实际吞吐,对照目标 QPS 是否达标
  • 响应时间直方图:一眼看出延迟是否集中、有无长尾
  • 延迟分布:P10 / P25 / P50 / P75 / P90 / P95 / P99,性能达标线通常卡在 P95
  • 状态码分布:出现 5xx 说明服务已被压垮,需降低压力重试

此外还会分阶段拆解耗时(DNS 解析、建连、请求写出、首字节等待、响应读取),方便定位瓶颈在网络还是服务端。

7. 结果归档:导出 CSV 原始数据

汇总报告适合人看,回归对比更适合存原始数据。加上-o csv参数,hey 会把每个请求的 8 列指标(响应时间、DNS、建连、写出、等待、读取、状态码、时间偏移)逐条导出,列定义说明见 requester/print.go。

建议的归档命名规范:

hey_<接口名>_<日期>_<并发>-c_<总请求数>-n.csv

将 CSV 与对应的命令、目标 URL、环境信息一起存档,后续版本回归时即可直接对比 P95 是否劣化。

8. 检查表:压测执行核对清单

把以下检查表复制到你的压测文档中,逐项打勾:

#检查项状态
1压测机已安装 hey 且版本确认☐
2默认参数小流量验证通过,状态码全 200☐
3-n/-c/-q/-z参数已按业务峰值设定☐
4请求方法、请求头、认证、超时配置正确☐
5目标为测试环境,写接口已有回滚预案☐
6压测期间同步监控服务端 CPU / 内存 / 错误率☐
7汇总报告已解读:吞吐、P95、状态码分布☐
8CSV 原始数据已导出并按规范命名归档☐

常见坑与快速自查

  • -n小于-c会直接报错退出:请求总数必须 ≥ 并发数。
  • P95 与平均值差距大:直方图出现右侧长尾时,看"慢请求"对应的是哪个阶段(DNS?建连?服务端?)。
  • 结果忽高忽低:优先怀疑压测机网络抖动或 CPU 核心不足,用-cpus固定核心数复测。

小结

用8 个步骤走一遍:装工具 → 打基线 → 定参数 → 配请求 → 跑压测 → 读报告 → 导 CSV → 归档核对,即可得到一次可复现、可对比、可归档的完整 hey 压测。hey 的价值正在于把 ApacheBench 级别的压测能力,压缩成了一条命令。

【免费下载链接】heyHTTP load generator, ApacheBench (ab) replacement项目地址: https://gitcode.com/GitHub_Trending/he/hey

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询