
Hey的3个开关参数-disable-keepalive、-disable-compression、-disable-redirects何时该用【免费下载链接】heyHTTP load generator, ApacheBench (ab) replacement项目地址: https://gitcode.com/GitHub_Trending/he/heyhey 是一款轻量级 HTTP 负载测试工具ApacheBench/ab 的现代替代品用一条命令就能向接口发起压测并输出延迟分布、每秒请求数等统计。但新手常困惑它自带的 3 个开关参数-disable-keepalive、-disable-compression、-disable-redirects到底该不该开本文用一张表 三段场景说明帮你快速判断 Hey 压测工具这 3 个开关参数的使用时机避免压测结果虚高或失真。先认识 hey一条命令完成 HTTP 压测安装后即可对任意 URL 发起压测例如hey -n 1000 -c 100 https://example.com上面命令表示100 个并发、共发送 1000 次请求结束时输出响应时间直方图和百分位延迟分布统计逻辑见 requester/report.go。这 3 个开关默认都是关闭即功能全部启用。它们共同点是模拟更朴素的客户端行为参数定义见 hey.go官方说明见 hey.go开关参数关掉的是什么一句话场景-disable-keepaliveTCP 连接复用模拟不支持持久连接的客户端测建连压力-disable-compression响应压缩测真实传输数据量验证服务端压缩配置-disable-redirects跟随 3xx 重定向只压测入口节点不跟踪跳转目标开关一-disable-keepalive 何时该用原理每次请求都重新建连开启后hey 会在底层传输层关闭连接复用实现位于 requester/requester.go对应http.Transport的DisableKeepAlives。默认情况下100 个并发 worker 会长期复用 TCP 连接开启后每次请求都要重新经历 TCP 握手 TLS 握手请求完成即断开。适合用的场景验证服务能否扛住大量连接建立如果你的接口每次都是新连接如部分移动端、旧网关压测必须加上它否则测出来的是连接池友好的性能。排查慢请求是否与建连有关加上它后延迟明显升高且稳定说明瓶颈在握手阶段如 TLS 配置、网络链路而非业务逻辑。注意加上后平均延迟一定比默认值高这是预期行为不要误判为服务变慢。开关二-disable-compression 何时该用原理不请求、不解压数据开启后 hey 不发送压缩协商头、也不做解压同样在 requester/requester.go 的传输层配置中客户端拿到的是响应原始字节。适合用的场景测量真实数据量想确认接口实际返回了多少未压缩数据、带宽占用多大时。验证服务端压缩配置Nginx/网关的gzip、br是否按预期生效关闭后再压一轮对比吞吐量差异一目了然。绕过压缩层排查问题如果怀疑响应解码异常乱码、截断先关掉压缩拿到原始数据再定位。注意关闭压缩后传输字节数增加带宽受限环境下 QPS 可能下降——这反映的是数据量差异不是服务退化。开关三-disable-redirects 何时该用原理遇到 3xx 直接停住默认情况下 hey 会跟随重定向链直到拿到最终响应开启后实现在 requester/requester.go 的CheckRedirect回调中遇到 301/302/307 等状态码立即返回该响应不再继续跳转。适合用的场景只压测入口节点例如 CDN 边缘节点、网关入口会 302 到后端你只想评估入口性能加上它即可让统计纯粹。验证重定向行为本身确认 301/302 比例、跳转目标是否符合预期结果里的状态码分布会直接显示 3xx 占比。避免误伤跳转目标入口 302 到第三方域名时不开此开关会把压力也打到第三方身上。注意结果摘要中的状态码分布会出现大量 301/302这是未跟随跳转的正确表现并非请求失败。3个开关该不该开一张决策清单你的压测目标建议模拟真实浏览器、常规回归压测三个都不加用默认行为测 TCP/TLS 建连能力、模拟无持久连接客户端加-disable-keepalive测真实传输量、验证压缩配置加-disable-compression只压入口节点、验证 3xx 跳转行为加-disable-redirects小技巧拿不准时同一 URL 跑两轮默认 加开关对比 RPS 和 P99 延迟差异本身就是重要结论。总结-disable-keepalive让每请求独立建连专测连接建立路径。-disable-compression还原未压缩数据流专测真实数据量与压缩配置。-disable-redirects遇 3xx 即停专测入口节点与跳转行为。三者都是回归朴素的调试型开关默认全开最贴近真实浏览器需要聚焦某一环节时再单独启用。相关参数定义与实现分别位于 hey.go 和 requester/requester.go想深入原理可以直接对照源码阅读。【免费下载链接】heyHTTP load generator, ApacheBench (ab) replacement项目地址: https://gitcode.com/GitHub_Trending/he/hey创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考