Hey HTTP压测工具命令行解析深度剖析:20个flag与headerSlice可重复-H参数设计指南
Hey HTTP压测工具命令行解析深度剖析20个flag与headerSlice可重复-H参数设计指南【免费下载链接】heyHTTP load generator, ApacheBench (ab) replacement项目地址: https://gitcode.com/GitHub_Trending/he/heyhey是一个轻量级的HTTP 压测工具ApacheBench 的现代替代品单文件即可完成数千并发请求。本文带你深度剖析 hey 的命令行参数解析设计20 个 flag 如何定义、headerSlice自定义类型如何让-H参数支持可重复传入以及正则表达式在其中扮演的角色。hey 是什么一个极简 HTTP 负载生成器hey 的核心职责只有一个向 Web 应用发送指定数量的请求并输出响应时间的统计报告。相比ab它基于Go 语言编写天然高并发单二进制无依赖支持HTTP/2-h2参数一键开启输出更友好支持 CSV 格式导出-o csv想从源码开始体验克隆仓库即可构建git clone https://gitcode.com/GitHub_Trending/he/hey整个命令行层的核心代码集中在 hey.go 一个文件中不到 300 行是学习 CLI 参数设计的绝佳样本。20个flag参数速查表hey 压测参数一览所有 flag 在 hey.go 的var块中集中声明配合flag.String、flag.Int、flag.Duration等标准库函数注册。按功能可分为五组1️⃣ 请求量与控制类参数类型默认值说明-nint200总请求数-cint50并发 worker 数-qfloat640每个 worker 的 QPS 限流-zduration0压测时长如10s、3m指定后忽略-n-tint20单请求超时秒0表示不限2️⃣ 请求内容与方法类参数说明-mHTTP 方法GET / POST / PUT / DELETE / HEAD / OPTIONS-d请求体内容-D从文件读取请求体-TContent-Type默认text/html-AAccept 头-U自定义 User-Agent-aBasic 认证格式用户名:密码3️⃣ 头信息类-H自定义 HTTP 头可重复指定本文重点见下文-host覆盖 HTTP Host 头虚拟主机场景必备4️⃣ 网络行为类-xHTTP 代理地址host:port-h2启用 HTTP/2-disable-compression/-disable-keepalive/-disable-redirects三个布尔开关分别关闭压缩、连接复用与自动跟随重定向——压测时常用它们隔离变量得到纯净的网络数据5️⃣ 运行环境类-o输出类型目前支持csv-cpus限制 CPU 核心数默认取当前机器核数hey.go 中通过runtime.GOMAXPROCS(-1)获取完整的参数说明文案定义在 hey.go 的usage常量里hey -h时打印到标准错误流。核心设计可重复的 -H 参数与 headerSlice很多工具的自定义头只能用逗号或分号拼接成一个字符串用户还得自己写分割逻辑。hey 的做法更优雅注册一个可重复的 flag。var hs headerSlice flag.Var(hs, H, )就这两行hey.go。关键在于flag.Var它接受任何实现了flag.Value接口的类型之后每出现一次-H就会调用一次Set方法。headerSlice仅 10 行的接口实现headerSlice的定义在 hey.gotype headerSlice []string func (h *headerSlice) String() string { return fmt.Sprintf(%s, *h) } func (h *headerSlice) Set(value string) error { *h append(*h, value) return nil }String()打印 flag 默认值时调用返回当前切片内容Set(value)每传入一个-H就append一次——这就是可重复参数的本质接口 累积切片于是用户可以自然地写成hey -H Accept: application/json \ -H Authorization: Bearer token \ https://example.com正则校验防御性解析收集到原始字符串后hey 在 hey.go 逐个用正则校验格式headerRegexp ^([\w-]):\s*(.)这个正则要求必须是合法的名字: 值形式解析失败就打印用法并退出usageAndExit。配套还有 Basic 认证的正则^(.):([^\s].)hey.go。 值得注意小写的-h曾是旧版自定义头参数现在已被废弃。如果你还在用-h程序会直接提示Flag -h is deprecated, please use -H insteadhey.go。小写单字母让位给标准的帮助参数大写-H承担业务功能——这是参数命名演进的经典案例。参数校验与执行流程从 flag 到 Work 结构体参数注册之后main()的执行流程hey.go可以概括为四步1. 互斥校验-z指定时长后请求数直接设为math.MaxInt32无限否则校验-n -c 0不满足立即退出。这种参数间约束前置校验避免了跑到一半才报错。2. 组装请求头先Content-Type再叠加所有-H然后Accept、Basic AuthUser-Agent 最后统一追加hey/0.0.1后缀保证来源可追踪hey.go。3. 构建请求http.NewRequest创建请求读取-D文件体设置ContentLength与req.Host。4. 交给 requester 包所有 flag 最终映射进 requester.Work 结构体的字段——N、C、QPS、Timeout、H2、ProxyAddr等一一对应再调用w.Run()启动 worker 池。QPS 限流则由time.Ticker精确按1e6/QPS微秒间隔放行requester/requester.go。整个设计呈现出清晰的单向数据流命令行字符串 → 校验 → 结构化配置 → 执行引擎flag 包本身零业务逻辑。典型压测命令示例结合上面的参数几组高频用法# 1000 请求、100 并发 hey -n 1000 -c 100 https://example.com # 持续压测 30 秒-z 优先于 -n hey -z 30s https://example.com # 每 worker 限流 10 QPS hey -q 10 -c 5 -z 30s https://example.com # POST 请求 自定义头 HTTP/2 hey -m POST -d a1b2 \ -H Content-Type: application/json \ -h2 https://example.com完整示例参考 README.md。总结hey 的命令行设计浓缩了三个可复用的模式集中声明所有 flag 在一个var块配合集中式usage文案可读性极佳可重复参数flag.Var 自定义flag.Value类型headerSlice10 行代码实现优雅的多值采集前置校验参数间约束-nvs-c、-z覆盖-n在启动前一次性检查完毕这套字符串 → 结构化配置 → 执行的单向数据流几乎可以原样套用到你正在写的任何 Go CLI 工具中。【免费下载链接】heyHTTP load generator, ApacheBench (ab) replacement项目地址: https://gitcode.com/GitHub_Trending/he/hey创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Redis命令:HPTTL

Redis命令:HPTTL

Redis HPTTL 命令详细教程 HPTTL 查询 Hash 中一个或多个字段的剩余生存时间,以毫秒为单位返回。它是只读命令,不修改任何数据或期限。 资料合集:https://pan.quark.cn/s/10e98d308913、https://pan.quark.cn/s/f56bc69c5338 一、概览与语…

2026/10/4 18:04:07 阅读更多 →
中南智能工控教育|西门子 VS 三菱 PLC,新手别瞎纠结!选对比学得多更重要

中南智能工控教育|西门子 VS 三菱 PLC,新手别瞎纠结!选对比学得多更重要

中南智能工控教育在网上常看到打开工控论坛、刷短视频,到处都在吵西门子和三菱谁更强。有人吹西门子就业无敌,也有人说三菱简单适合小白。很多刚入行的朋友看得眼花缭乱,甚至还没开始学,就先在选品牌这件事上内耗好久。说实话&…

2026/10/4 18:04:06 阅读更多 →
32GB单卡LoRA微调实战:显存估算、配置与排错指南

32GB单卡LoRA微调实战:显存估算、配置与排错指南

最近帮人排查一个32GB显存卡上的训练问题,对方一上来就问了句“LoRA微调显存怎么估”,说是模型一加载看着挺宽裕,一跑训练就OOM,保险起见还不敢开大batch。这个场景我见过太多次。很多人以为LoRA微调很小成本,32GB显存…

2026/10/4 18:04:06 阅读更多 →

最新新闻

YOLO监控场景行人检测实战:数据集训练全流程与避坑指南

YOLO监控场景行人检测实战:数据集训练全流程与避坑指南

简介:面向街道监控场景的行人检测数据集,共包含1200张监控视角抓拍图片,标注类别为person,最大特点是已按YOLO系列要求生成txt标签,可直接用于YOLOv3至YOLOv10等全系列算法训练。资源包内总计2000个文件,由…

2026/10/4 21:53:04 阅读更多 →
OpenClaw 实战总结:从WSL2部署到Skill开发的开源AI助手指南

OpenClaw 实战总结:从WSL2部署到Skill开发的开源AI助手指南

OpenClaw 这个项目我从年初一直折腾到现在,中间经历了好几轮版本重写。标题写成“终章”不是说项目没了,而是我想把这一阶段的使用心得收个尾:从 Windows Companion 到 WSL2 环境校验,从 Node.js 安装到 Ollama 本地模型&#xff…

2026/10/4 21:53:04 阅读更多 →
从2小时到10分钟:发票批量录入的OCR与Excel自动化实操指南

从2小时到10分钟:发票批量录入的OCR与Excel自动化实操指南

1. 从2小时到10分钟,我到底改了什么干过律所行政或财务的都知道,业务管理系统里录发票这事儿,看着不起眼,干起来真要命。重庆这边的律所,业务量一大,每个案子结案要归档案卷、登记费用,发票录入…

2026/10/4 21:53:04 阅读更多 →
Claude Code部署实战:从零生成Landing Page完整指南

Claude Code部署实战:从零生成Landing Page完整指南

今天是学习 AI 编程的第四天。前三天我基本在“用”AI:写提示词让聊天机器人解释代码,开个编辑器插件让它补全函数,把报错信息粘贴出去求助。工具换了好几轮,但对 AI 编程的认知始终停留在一问一答的层面。第四天终于不一样了&…

2026/10/4 21:53:04 阅读更多 →
手写PLY文件+Open3D实现工业级点云可视化

手写PLY文件+Open3D实现工业级点云可视化

1. 项目概述:为什么一个能自己生成并可视化PLY点云的人,比只会调库的工程师更值钱点云可视化不是炫技,是三维感知落地的第一道门槛。我带过三届校招实习生,发现一个扎眼现象:90%的人能跑通Open3D官网示例,但…

2026/10/4 21:53:04 阅读更多 →
Qwen2-VL图像识别微调实战:Python实现LoRA训练与部署指南

Qwen2-VL图像识别微调实战:Python实现LoRA训练与部署指南

简介:面向图像识别与多模态大模型应用开发者,这份Python工程源码完整演示了基于千问Qwen2-VL从COCO 2014 Caption图片数据准备、模型训练到checkpoint加载推理的落地路径,适合已有Python基础、希望掌握视觉语言模型微调及图像识别工程化流程的…

2026/10/4 21:52:03 阅读更多 →

日新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 1:00:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 11:40:45 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 9:43:54 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/4 20:14:29 阅读更多 →