news 2026/10/3 16:56:21

无网络环境部署Hey压测工具:离线二进制分发与内网压测完整指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
无网络环境部署Hey压测工具:离线二进制分发与内网压测完整指南

无网络环境部署Hey压测工具:离线二进制分发与内网压测完整指南

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

hey是一个用 Go 编写的轻量级 HTTP 压测工具,定位为 ApacheBench(ab)的现代替代品,通过并发 Worker 向目标 URL 发送请求并输出延迟直方图、百分位分布等统计指标。由于它是零依赖的单一静态二进制,天生适合在无外网的内网、隔离机房或安全域中部署——无需安装任何运行时,拷贝一个文件即可开始压测。

为什么 Hey 是离线压测的理想选择 🎯

许多压测工具(如 JMeter)依赖 JVM 或复杂的安装环境,在隔离网络中难以落地。Hey 则不同:

特性说明
单一静态二进制CGO_ENABLED=0编译,不依赖任何动态库
体积极小官方发布包通常不到 10 MB
零运行时不需要 Python、JDK 或任何解释器
跨平台交叉编译一台机器编译出 Linux / macOS / Windows 版本
支持 HTTP/2-h2参数即可启用

核心压测逻辑位于 requester/requester.go(Worker 调度与请求发送),CLI 参数解析与入口在 hey.go。整个项目代码量极小,审计成本低。

离线二进制分发的三种方式 📦

方式一:使用官方预编译二进制(最快)

在项目 README.md 中列出了三个平台的发布下载地址:

  • Linux (amd64):hey_linux_amd64
  • macOS (amd64):hey_darwin_amd64
  • Windows (amd64):hey_windows_amd64

操作步骤:

  1. 在有外网的机器上下载对应平台的二进制文件
  2. 通过 U 盘、内网文件服务器或镜像仓库传输到目标机器
  3. 赋予执行权限即可使用:
chmod +x hey_linux_amd64 ./hey_linux_amd64 -n 100 -c 10 http://intranet-api:8080/health

💡 这是最省事的方案,适合一次性压测或临时任务。

方式二:本地交叉编译(推荐团队使用)

项目自带 Makefile,一条命令即可生成三大平台的二进制:

make release

该目标会依次执行(详见 Makefile 第 3–6 行):

GOOS=windows GOARCH=amd64 go build -o ./bin/hey_windows_amd64 GOOS=linux GOARCH=amd64 go build -o ./bin/hey_linux_amd64 GOOS=darwin GOARCH=amd64 go build -o ./bin/hey_darwin_amd64

只要编译机安装 Go 1.24+(见 go.mod 的go 1.24.0声明)并拉取一次依赖,后续完全离线可重复构建。将./bin/目录整体打包分发给内网各节点即可。

方式三:Docker 镜像(适合容器化内网)

项目提供了多阶段构建的 Dockerfile。关键点:

  • 构建阶段使用golang:1.15基础镜像
  • 以CGO_ENABLED=0静态编译
  • 最终阶段FROM scratch,仅包含二进制 + CA 证书,镜像极小

在有网环境构建并导出:

docker build -t hey:offline . docker save hey:offline -o hey-offline.tar

将hey-offline.tar拷入内网后加载运行:

docker load -i hey-offline.tar docker run --rm hey:offline -n 200 -c 50 http://svc-internal:8080

⚠️ 注意:FROM scratch镜像无 shell,调试时可临时加--entrypoint /bin/sh不方便,建议压测参数在运行前确认好。

内网压测实战:常用参数速查 🚀

以下参数覆盖了大多数内网压测场景(完整列表见 hey.go 中的usage变量):

参数作用示例
-n总请求数(默认 200)-n 1000
-c并发 Worker 数(默认 50)-c 100
-z持续压测时长,到达后自动停止-z 30s/-z 5m
-q每 Worker 限速(QPS)-q 10
-mHTTP 方法-m POST
-H自定义请求头(可重复)-H "Authorization: Bearer xxx"
-d请求体-d "key=value"
-t单请求超时(秒)-t 30
-h2启用 HTTP/2-h2
-o输出格式:空=摘要,csv=CSV-o csv

典型内网压测命令:

# 持续 60 秒、50 并发、限速每 Worker 20 QPS hey -c 50 -q 20 -z 60s http://order-service.internal/api/v1/orders # POST 接口 + 鉴权头 + CSV 导出(便于离线分析) hey -m POST -H "Content-Type: application/json" \ -d '{"qty":1}' -o csv \ -n 500 -c 20 \ http://payment-gateway.internal/charge | tee result.csv

读懂压测报告 📊

Hey 默认输出包含以下核心区块(模板定义于 requester/print.go):

  • Summary:总耗时、最慢/最快/平均响应、每秒请求数(RPS)
  • Response time histogram:延迟直方图,一眼看出分布形态
  • Latency distribution:P10 / P25 / P50 / P75 / P90 / P95 / P99 百分位
  • Details:DNS、TCP 建连、请求写入、响应等待、响应读取各阶段的均值/极值
  • Status code distribution:各 HTTP 状态码计数
  • Error distribution:连接失败、超时等错误统计

对于内网服务,重点关注DNS+dialup和resp wait两个指标:前者反映内网网络质量,后者直接对应后端处理耗时。

离线环境的注意事项 ⚠️

  1. TLS 证书:FROM scratch镜像已内置 CA 证书(Dockerfile 第 27 行)。裸二进制若访问内网自签名 HTTPS,注意 hey 源码中InsecureSkipVerify: true(见 requester/requester.go 第 241 行),默认跳过证书校验,无需额外配置。

  2. CPU 核数:-cpus参数可控制使用的 CPU 核数,默认取机器全部核心。在小规格内网机器上建议显式设置,避免压测进程抢占业务资源。

  3. 结果留档:内网无外部监控平台时,用-o csv将逐条延迟数据导出,压测后可通过 U 盘带回办公网做深度分析。

  4. 版本管理:建议在二进制旁放置一个VERSION文件记录构建 commit,方便团队追溯压测基准。

项目文件导航 📁

文件用途
hey.goCLI 入口、参数定义与调度
requester/requester.goWorker 池、HTTP 请求发送与指标采集
requester/report.go统计聚合、直方图与百分位计算
requester/print.go摘要 / CSV 输出模板
Makefile三平台交叉编译与发布脚本
Dockerfile多阶段构建,产出 scratch 最小镜像
go.modGo 模块声明(依赖仅golang.org/x/net)
README.md完整参数说明与示例

Hey 的"单文件、零依赖、秒启动"特性,让它成为内网压测场景中最容易落地的工具之一。无论是通过 U 盘拷贝一个 10 MB 的二进制,还是在内网 Harbor 里存一份 scratch 镜像,都能让团队在完全隔离的网络中拥有可靠的 HTTP 压测能力。

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/3 16:56:06

Linux运维:MariaDB知识点总结

MariaDB知识点总结MariaDB是MySQL的分支,CentOS7默认数据库,端口3306,核心包含进程、安装加固、配置文件、库表SQL操作、用户权限、密码故障处理、备份恢复、主从复制。1. 双进程模型 mysqld_safe:守护监控进程:启动、…

作者头像 李华
网站建设 2026/10/3 16:55:28

GB/T 7714-2015 参考文献著录速查:文献类型标识、常见错误与批量转换

参考文献格式分,是整个论文流程里性价比极低的失分:内容没毛病,格式错一堆,盲审和编辑的第一印象直接受损。这篇把 GB/T 7714-2015 顺序编码制的常用要点整理成一页速查。 一、各类型文献的著录骨架 期刊 [J]:作者. 题…

作者头像 李华
网站建设 2026/10/3 16:51:55

由前AI运营助手:把商品资料整理成可执行的内容任务单

电商内容返工,常见原因是商品资料、渠道要求和制作任务混在一起。由前AI运营助手可以帮助整理市场与内容方向,但输入资料和最终事实仍需要人工确认。把任务拆成一张可执行的清单,比直接要求“写一篇卖货文案”更容易验收。 1. 先写清商品事实…

作者头像 李华
网站建设 2026/10/3 16:51:15

nodejs24安装(node.js安装)

参考说明:参考文章有些小问题。 【2025年最新版】Node.js安装及环境配置超详细教程(以win11为例子)_nodejs安装及环境配置-CSDN博客 文章特别说明:请不要 擅自更改 安装路径,默认的就行,不要听从原作者的

作者头像 李华