ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

如何用Hey压测API网关:反向代理与Nginx开销基准测试实战

如何用Hey压测API网关:反向代理与Nginx开销基准测试实战 如何用Hey压测API网关反向代理与Nginx开销基准测试实战【免费下载链接】heyHTTP load generator, ApacheBench (ab) replacement项目地址: https://gitcode.com/GitHub_Trending/he/hey想量化API网关或 Nginx 反向代理带来的性能损耗吗本文带你使用Hey这款轻量级 HTTP 压测工具HTTP load generatorApacheBench/ab 的现代替代品完成一次完整的反向代理开销基准测试。Hey 用 Go 编写、单文件运行、默认 50 并发 200 请求一条命令即可输出 RPS、延迟分布、错误统计等关键指标是压测 API 网关、网关前置 Nginx 开销的得力工具 。为什么选 Hey 做网关压测工具很多团队压测 API 网关时还在用 ApacheBenchab。Hey 作为ab 的替代品优势很明显Go 编写跨平台单二进制无需依赖 Apache 环境默认并发更高ab 默认只有 1 个并发Hey 默认 50 并发-c 50更贴近真实网关场景支持 HTTP/2通过-h2参数即可开启方便对比网关的 HTTP/2 透传开销细粒度延迟指标内置 DNS、建连、写请求、等首字节、读响应五个阶段的耗时拆分见 requester/requester.go 中result结构体的connDuration、dnsDuration、delayDuration字段CSV 输出-o csv可直接导出指标便于归档对比不同网关配置第一步一键安装 Hey 压测工具三种安装方式任选其一1. 直接下载预编译二进制Linux/macOS/Windows amd64 均有地址见 README.md 的 Installation 章节。2. macOS 用 Homebrewbrew install hey3. 从源码构建适合想定制输出的场景git clone https://gitcode.com/GitHub_Trending/he/hey cd hey go build -o hey hey.go项目也提供了 Makefile一键交叉编译三平台和 Dockerfile构建为极小的 scratch 镜像可容器化部署压测节点。安装后验证hey --help能看到-n请求数、-c并发数、-z持续时间等参数即安装成功。第二步搭好直连 vs 过网关两套目标基准测试的核心思想同一后端两种路径对比差值。目标 A基线直连后端# 压测后端服务本身 hey -n 1000 -c 50 http://192.168.1.10:8080/api/ping目标 B经过 Nginx 反向代理准备一份最小 Nginx 配置把流量转发到同一后端upstream backend { server 192.168.1.10:8080; } server { listen 80; location /api/ { proxy_pass http://backend; proxy_set_header Host $host; } }# 压测同一后端但流量经过 Nginx 网关 hey -n 1000 -c 50 http://192.168.1.20:80/api/ping 对比两组结果Nginx 引入的开销 目标 B 的延迟 - 目标 A 的延迟。第三步关键压测命令与参数速查针对 API 网关场景推荐以下几组命令参数定义详见 hey.go① 标准对比压测固定请求数hey -n 1000 -c 50 http://gateway.example.com/api/ping② 持续流量压测更贴近线上# 持续压 2 分钟适合观察网关在稳态下的开销 hey -z 2m -c 100 http://gateway.example.com/api/ping③ HTTP/2 网关透传开销# 对比 -h2 开关前后量化网关 HTTP/2 支持的成本 hey -h2 -n 1000 -c 50 https://gateway.example.com/api/ping④ 关掉连接复用测网关冷连接开销hey -disable-keepalive -n 500 -c 50 http://gateway.example.com/api/ping⑤ 限速模拟真实用户流量# 每个 worker 限速 10 QPS共 5 个 worker hey -q 10 -c 5 -z 30s http://gateway.example.com/api/ping⑥ 导出 CSV 归档hey -n 1000 -c 50 -o csv http://gateway.example.com/api/ping nginx_gateway.csv第四步读懂结果量化 Nginx 开销压测结束后Hey 会打印汇总报告渲染逻辑见 requester/report.go。重点关注这几项指标含义网关场景关注点Requests/sec(RPS)每秒处理请求数网关吞吐是否成为瓶颈Average平均延迟与直连后端对比得出代理开销200 OK/ 4xx / 5xx状态码分布网关限流、超时会产生 429/502/504Fastest / Slowest最快/最慢请求长尾延迟是否被网关放大延迟分布直方图各延迟区间请求占比判断网关负载是否均匀示例解读若直连后端平均延迟 5ms经 Nginx 后变为 8msRPS 从 20000 降到 17500则可得出结论——这套网关配置在当前压力下约引入3ms 固定开销、12% 吞吐损耗这就是你在压测报告中要呈现的数字 。实战技巧与避坑指南压测机放同机房网关开销通常只有毫秒级跨网段压测的网络抖动会淹没被测差异并发别超过网关 worker 数太多-c设得过高会先打满压测机自身先跑hey -c 1 -n 100确认基线正常多轮取中位数Nginx 的开销对 CPU 频率敏感建议每组配置跑 3 次取中位注意-t超时默认单请求 20 秒超时网关超时应调小避免压测被慢请求拖住区分 HTTP/1.1 与 HTTP/2不带-h2时 Hey 强制走 HTTP/1.1见 requester/requester.go 中TLSNextProto的置空逻辑对比网关两种协议开销时务必注明相关源码导读文件说明hey.go主程序命令行参数解析与压测入口requester/requester.go压测引擎并发 worker、QPS 限速、延迟分段采集requester/report.go结果报告RPS、延迟分布、状态码统计README.md全部参数说明与示例命令小结用 Hey 做 API 网关与 Nginx 开销基准测试只需三步安装工具 → 搭建直连/过代理双目标 → 同参数对比压测。借助其 HTTP/2 支持、延迟分段指标和 CSV 导出你能用极低的成本把网关到底慢了多少变成一个精确的数字为网关选型与调优提供可靠依据 【免费下载链接】heyHTTP load generator, ApacheBench (ab) replacement项目地址: https://gitcode.com/GitHub_Trending/he/hey创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表