ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Hey社区高频问题解答:GitHub Issues中10个最值得看的疑问

Hey社区高频问题解答:GitHub Issues中10个最值得看的疑问 Hey社区高频问题解答GitHub Issues中10个最值得看的疑问【免费下载链接】heyHTTP load generator, ApacheBench (ab) replacement项目地址: https://gitcode.com/GitHub_Trending/he/heyhey是一款用 Go 编写的轻量级HTTP 压测工具HTTP load generator也是 ApacheBenchab的现代替代方案。一条命令即可压测你的接口得到 QPS、延迟分布和错误率——这正是新手性能测试的最佳起点。本文整理了 hey 社区讨论度最高的 10 个高频问题逐一给出答案与实操读完即可独立上手 hey 压测。 推荐资料官方用法见 README.md核心实现在 hey.go 与 requester/ 目录。❓ 疑问1hey 和 ApacheBenchab到底有什么区别这是社区被问得最多的问题。简单说hey 更快、更现代、更好读。对比项ApacheBench (ab)hey实现语言CGo单文件二进制跨平台HTTP/2 支持❌✅-h2参数限速能力有限✅-q控制每秒请求数输出内容基础统计直方图 百分位延迟 状态码分布历史背景老牌工具前身叫 boom为避免重名改为 heyhey 用 goroutine 驱动并发工作节点逻辑见 requester/requester.go压测报告还细拆了 DNS、建连、写请求、等响应、读响应五个阶段见 requester/report.go定位慢在哪一目了然。 疑问2hey 的压测报告怎么读跑完压测终端会打印这样几块内容模板定义在 requester/print.goSummary总耗时、最快/最慢/平均响应时间、Requests/secQPSResponse time histogram响应时间直方图肉眼看出延迟集中在哪个区间Latency distribution10%~99% 百分位延迟实现见 requester/report.goDetailsDNSdialup、DNS-lookup、req write、resp wait、resp read 各阶段的平均/最快/最慢值Status code / Error distribution状态码与错误分布新手看报告的重点先看 Requests/sec 是否达标再看 99% 分位延迟是否稳定最后检查 Error distribution 是否为空。⚠️ 疑问3为什么报错 -n cannot be less than -c这是新手踩坑第一名-n总请求数不能小于-c并发数。hey -n 10 -c 50 https://example.com # ❌ 报错 hey -n 500 -c 50 https://example.com # ✅ 正常原因在启动校验逻辑 hey.go每个 worker 至少要分到 1 个请求否则并发数没有意义。记住一条规则即可n ≥ c。⏱️ 疑问4如何按固定时长压测而不是固定次数用-z指定持续时间到达时长后自动停止并输出报告hey -z 30s https://example.com # 压测 30 秒 hey -z 3m -c 100 https://example.com # 100 并发压测 3 分钟⚠️ 注意一旦指定了-z-n会被忽略相关逻辑见 hey.go。适合做「持续 N 秒的稳定性观察」类测试。 疑问5如何压测 HTTP/2 接口加一个-h2即可hey -h2 https://example.com实现位于 requester/requester.go开启后会通过http2.ConfigureTransport配置传输层让压测结果更贴近真实 HTTP/2 环境。不开启时 hey 默认走 HTTP/1.1避免了对比失真。 疑问6如何限制请求速率避免把服务压垮用-q限制每个 worker的每秒请求数QPShey -q 10 -c 5 -z 30s https://example.com # 5 个 worker × 每 worker 10 QPS 总限速 50 QPS持续 30 秒限流通过时间片轮询实现见 requester/requester.go。 经验值估算总 QPS -c×-q压生产环境前务必先在预发环境验证。 疑问7如何发送 POST 请求和自定义请求体组合使用-m方法、-d请求体、-TContent-Type、-H自定义 Header可重复hey -m POST \ -d param1value1param2value2 \ -H Accept: application/json \ https://example.com/api请求体太长用-D从文件读取如-D ./body.txt。其他常用项-aBasic 认证、-AAccept 头、-host自定义 Host 头完整参数清单在 README.md 中。 疑问8如何导出 CSV 做自动化分析加-o csv输出第一行为表头共 8 列字段说明见 requester/print.go列名含义response-time请求总耗时秒DNSdialup / DNS建连 / DNS 解析耗时Request-write / Response-delay / Response-read写请求 / 首字节等待 / 读响应耗时status-codeHTTP 状态码offset该请求相对压测起点的偏移时间适合接入 Excel、Grafana 或脚本做二次分析hey -n 1000 -c 50 -o csv https://example.com result.csv 疑问9浏览器能打开的网站hey 为什么报 TLS 错误先说结论hey 本身不会因证书问题失败。压测客户端默认开启了InsecureSkipVerify: true见 requester/requester.go自签名证书也能跑通——这是为了压测内部环境方便。如果你看到 TLS 相关报错优先排查是否误用了 HTTP 地址压 HTTPS 服务或反之目标站点是否对压测 UA 或高频连接做了拦截网络层代理、防火墙是否截断了长连接。⚙️ 疑问10-cpus、-x、-disable-redirects 这些进阶参数有什么用-cpus限制使用的 CPU 核心数避免压测机被占满默认等于机器核数见 hey.go-x指定 HTTP 代理host:port方便通过网关压内网服务-disable-redirects不跟随 30x 跳转适合专门验证重定向行为-disable-keepalive禁用连接复用每次请求都新建 TCP 连接测冷启动性能-t单请求超时秒默认 200表示不超时另外 hey 提供 Windows / Linux / macOS 三平台预编译二进制构建脚本见 MakefileWindows 用户无需编译环境仓库还附带 Dockerfile可docker build后在容器里直接跑压测。✅ 小结场景参数组合快速体验hey https://example.com指定次数并发-n 1000 -c 100固定时长压测-z 30s限速压测-q 10 -c 5HTTP/2-h2导出数据-o csvhey 的设计哲学就是「小而全」没有冗长配置十几个命令行参数覆盖绝大多数压测场景。建议把 README.md 放在手边遇到参数细节直接查阅想深入统计原理可以顺着 requester/report.go 的snapshot()与histogram()读下去。祝你的接口稳如泰山 【免费下载链接】heyHTTP load generator, ApacheBench (ab) replacement项目地址: https://gitcode.com/GitHub_Trending/he/hey创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表