必须先安装并验证go环境,再安装hey或vegeta等压测工具;go version需成功输出版本号,否则工具因依赖缺失无法运行。

go 环境必须先装好,否则后续所有并发压测工具(比如 ab、hey、vegeta)都跑不起来——它们要么依赖 Go 编译,要么本身是 Go 写的,且需要 go 命令在 PATH 里。
验证 go 是否可用,再谈压测工具
很多用户卡在“压测工具报错找不到 go”,其实根本不是工具问题,而是 go 没装对或没生效。
- 打开新终端(CMD/PowerShell/Terminal),执行:go version
- 必须看到类似输出:go version go1.25.0 windows/amd64(或对应系统版本)
- 如果提示 'go' is not recognized 或命令未找到:
- Windows:确认安装的是 .msi 包,且已**重启所有终端窗口**(环境变量不会热加载)
- Linux/macOS:检查 /usr/local/go/bin 是否已写入 PATH,并执行 source ~/.bashrc 或 source ~/.zshrc用 go install 装压测工具(推荐方式)
Go 生态里主流压测工具如 hey、vegeta 都支持直接 go install 安装,无需手动下载二进制。前提是 Go 版本 ≥ 1.16(2026 年默认都满足)。
- 安装 hey(轻量、类 ab,支持 HTTP/2):
go install github.com/rakyll/hey@latest
- 安装 vegeta(更灵活,支持脚本化、结果导出):
go install github.com/tsenart/vegeta@latest
- 安装后验证:
hey -h 或 vegeta -version注意点:
- 国内用户若遇到
go install超时或拉包失败,说明代理没配好,立刻执行:go env -w GOPROXY=@#@#@#@#@#@#@#@#@#@0 -
go install默认把二进制放到$GOPATH/bin(或$GOBIN),确保该路径已在PATH中 - 不要用
go get(已废弃),它会写入go.mod,污染当前目录
ab 不是 Go 工具,别混用
ab(Apache Bench)是 Apache HTTP Server 自带的 C 工具,和 Go 无关。
- 它不能测 HTTP/2、不支持 JSON body、无法自定义 header 链式请求
- Windows 下需单独装 Apache 或从第三方打包版获取 ab.exe,容易权限/路径问题
- 如果你已经装了 hey,就别折腾 ab —— 同样 100 并发,hey -n 1000 -c 100 http://localhost:8080 一行搞定,还更准
并发压测前必设的 Go 环境参数
Go 服务本身在压测时表现,受两个隐藏参数影响极大,但多数人忽略: -GOMAXPROCS:默认等于 CPU 核心数,但容器或云函数里可能被限制为 1 → 并发上不去
临时调高:
GOMAXPROCS=8 go run main.go
- GODEBUG:开启调度器追踪可定位 goroutine 阻塞
GODEBUG=schedtrace=1000 go run main.go(每秒打印调度摘要)
另外,压测目标服务如果是用 net/http 写的,默认 http.Server 没设 ReadTimeout/WriteTimeout,长连接堆积会导致假性瓶颈——这不是压测工具的问题,是服务端配置缺位。
真正的难点不在装工具,而在区分清楚:哪部分延迟来自网络、哪部分来自 Go 运行时调度、哪部分来自业务逻辑阻塞。工具只是探针,环境才是底座。
golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!











