文章目录Vegeta一个把压测做到命令行里的 HTTP 负载测试工具核心能力就三点几个做得扎实的地方适合谁用小结Vegeta一个把压测做到命令行里的 HTTP 负载测试工具做后端开发的人基本都离不开压测。Vegeta 在 GitHub 上已经拿到 25,095 个 Star是一个出现较早的 HTTP 负载测试工具。它的定位很明确用恒定的请求速率去压 HTTP 服务并且把整个过程做得像 Unix 管道一样顺手。我自己平时选压测工具最看重两点安装要快结果要准。Vegeta 直接提供静态二进制macOS 用 Homebrew 一条命令装好Arch 用 pacmanFreeBSD 用 pkg源码 make 也行。对不爱折腾环境的人来说这点很加分。核心能力就三点第一命令行和 Go 库都能用。你既可以直接敲命令行也能在 Go 项目里 import 它的 lib 包。对写 Go 的人来说写压测脚本几乎零成本。第二子命令之间靠管道串起来。attack 负责发请求report 负责出统计plot 画时序图encode 做格式转换。标准用法就一行echo GET http://localhost/ | vegeta attack -duration5s | tee results.bin | vegeta report这种 Unix 风格让 Vegeta 很容易被拼进 CI、nightly 脚本或者监控告警里。第三报告维度比较全。文本报告会列出 total、rate、throughputlatencies 的 min、mean、50、95、99、max 分位值还有 success ratio、status codes 分布和 error set。也能导出 JSON、CSV、hdrplot或者直接生成 HTML 时序图。几个做得扎实的地方它避免了 Coordinated Omission 问题。很多压测工具只按自己发请求的节拍统计忽略了服务响应变慢时真实到达的请求量。Vegeta 会按设定的 rate 持续发请求响应慢不会导致少发请求这样测出来的延迟分布更接近线上真实场景。它支持分布式压测。单机打到文件描述符、内存、CPU 或带宽上限时可以把任务拆到多台机器上跑每台按总速率的一部分发请求最后把结果文件汇总到一起用vegeta report *.bin分析。它还有内置的 Prometheus exporter。跑 attack 时带上prometheus-addr参数就能让 Prometheus 直接拉取请求量、延迟、字节数、失败数等指标。适合谁用如果你是做后端、SRE 或者运维需要定期给接口做压力测试Vegeta 基本够用。它没有 Web 界面全部在命令行完成适合喜欢脚本化和自动化的人。Go 开发者也可以把它当库用自己定制压测逻辑。文档里给了示例几行代码就能定义 rate、targeter、attacker然后读取 metrics 输出 P99 延迟。小结Vegeta 不是那种可视化很强的工具但它在命令行压测这个方向上做得很稳。恒定速率、管道输出、多种报告格式、分布式支持、Prometheus 集成这些都是实际压测里很实在的需求。如果你需要一个不折腾、能写进脚本里的 HTTP 压测工具可以看看它。实在的需求。如果你需要一个不折腾、能写进脚本里的 HTTP 压测工具可以看看它。