ARTICLE DETAIL

资讯详情

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

Hey压测内网微服务:127.0.0.1、端口映射与集群IP的完整实战方案

Hey压测内网微服务:127.0.0.1、端口映射与集群IP的完整实战方案 Hey压测内网微服务127.0.0.1、端口映射与集群IP的完整实战方案【免费下载链接】heyHTTP load generator, ApacheBench (ab) replacement项目地址: https://gitcode.com/GitHub_Trending/he/heyHey 是一款用 Go 编写的轻量级 HTTP 压测工具ApacheBenchab的现代替代品支持并发 Worker、QPS 限速、按持续时间压测和 CSV 导出。本文带你用 Hey 压测内网微服务完整覆盖127.0.0.1 本机直连、Docker 端口映射、Kubernetes ClusterIP三种最常见的内网寻址方式让你一条命令就能得到 QPS、延迟分位数和分阶段耗时报告。为什么内网微服务压测适合用 Hey内网压测的核心诉求是免依赖、可定制请求头、能定位慢在哪。Hey 恰好都满足单文件静态二进制无任何运行时依赖丢到内网任何 Linux/macOS 机器即可运行三种寻址全覆盖127.0.0.1本机、host:映射端口、集群 IP / VIP分阶段耗时拆解DNS 解析、TCP 建连、请求写入、响应等待、响应读取各自统计均值/最快/最慢快速判断慢在网络还是服务本身贴近真实业务支持自定义 Header、Basic 认证、请求体文件、HTTP/2、代理适配虚拟主机路由的微服务网关。参数定义在 hey.go压测引擎Worker 调度、连接池复用实现在 requester/requester.go报告统计逻辑在 requester/report.go。一键安装 Hey 的三种方式方式一包管理器macOSbrew install hey方式二克隆仓库源码构建跨平台通用git clone https://gitcode.com/GitHub_Trending/he/hey cd hey go build -o hey .方式三用仓库内置 Dockerfile 构建镜像git clone https://gitcode.com/GitHub_Trending/he/hey cd hey docker build -t hey:local .镜像基于 Dockerfile 构建最终产物是一个scratch极简镜像入口即hey命令非常适合在无外网的内网节点上分发使用。发布用的多平台构建脚本可参考 Makefile。第一步127.0.0.1 本机微服务压测假设你的微服务在本机8080端口监听先用 curl 确认接口可用curl -i http://127.0.0.1:8080/ping然后是最基本的压测——默认 200 个请求、50 个并发hey http://127.0.0.1:8080/ping三种常用压测形态# 1) 固定请求数1000 个请求、100 并发 hey -n 1000 -c 100 http://127.0.0.1:8080/ping # 2) 固定持续时间压 30 秒此时 -n 被忽略CtrlC 可随时优雅停止 hey -z 30s -c 50 http://127.0.0.1:8080/ping # 3) 限速压测每 Worker 100 QPS、5 个 Worker共 500 QPS hey -q 100 -c 5 -z 1m http://127.0.0.1:8080/ping内网小经验压测本机服务时 CPU 开销会被计入同一台机器建议加-cpus 4之类参数限制 hey 使用的核心数给被测服务留出资源。第二步端口映射场景压测Docker / 开发服务器微服务跑在容器里、宿主机通过-p映射端口时压测目标是127.0.0.1:映射端口docker run -d -p 8080:9000 myservice:latest # 压测宿主机映射端口 hey -c 50 -z 30s http://127.0.0.1:8080/api/hello这个场景有两个高频坑1) 网关按 Host 路由时用-host重写请求头容器内服务或前置网关常按Host头做虚拟主机匹配。URL 填映射地址但把Host声明成服务域名路由和证书校验hey 默认跳过证书验证就都能正常工作hey -host user-service.internal -c 50 -z 30s http://127.0.0.1:8080/api/hello2) 想量化 TCP 建连成本关掉连接复用默认情况下 hey 会复用 keep-alive 连接空闲连接池上限 500见 requester/requester.go。对比一次-disable-keepalive的结果就能看出端口映射链路上新建连接的开销占比hey -disable-keepalive -c 50 -z 10s http://127.0.0.1:8080/api/hello第三步集群 IP / VIP / ClusterIP 压测生产内网中微服务通常由负载均衡 IPVIP、Kubernetes Service 的 ClusterIP 或 Ingress 集群入口提供服务。压测这类入口时核心参数组合如下# 对 ClusterIP 压测并用 -host 命中正确的虚拟主机 hey -host order-service.internal \ -c 100 -z 2m \ http://10.96.0.10:8080/v1/orders/health # 需要走内网代理时追加 -x 指定 host:port hey -x 127.0.0.1:3128 -c 50 -z 30s http://10.96.0.10:8080/v1/orders/health # 带鉴权的接口 hey -a tester:s3cret -H X-Request-Source: loadtest \ -c 50 -z 1m http://10.96.0.10:8080/v1/orders/health针对集群入口的实用开关参数内网压测中的作用-host 域名URL 指向 ClusterIP/VIPHost头仍声明服务域名保证虚拟主机路由正确-x host:port请求经由内网 HTTP 代理转发-disable-redirects入口返回 302 时不跟随直接统计原始状态码分布-t 5单请求超时 5 秒默认 20避免慢节点拖垮整轮统计-cpus 8控制 hey 自身占用的 CPU 核数多机放大流量ClusterIP 压测需要更高 QPS 时在多台压测机跑同一条hey命令即可线性叠加每台机器的Requests/sec相加就是集群入口的真实吞吐。常用参数速查表参数说明示例-n总请求数默认 200hey -n 1000-c并发 Worker 数默认 50hey -c 100-z压测持续时间设置后忽略-nhey -z 30s-q每 Worker QPS 限速hey -q 100 -c 5-m/-d/-DHTTP 方法 / 内联请求体 / 文件请求体hey -m POST -d {uid:1}-H自定义 Header可重复使用hey -H Authorization: Bearer xx-aBasic 认证user:passhey -a u:p-host改写 HTTP Host 头hey -host api.internal-xHTTP 代理地址hey -x 127.0.0.1:3128-t单请求超时秒数0 为不限hey -t 5-h2启用 HTTP/2需 HTTPShey -h2 https://...-o csv逐请求导出 CSVhey -o csv -c 10 out.csv-disable-keepalive禁用连接复用对比建连开销完整选项列表见 README.md 或运行hey -h。读懂 Hey 的压测报告跑完一次压测终端输出四段核心信息默认模板定义在 requester/print.goSummary 汇总总耗时、最快/最慢/平均响应时间、Requests/sec实测吞吐Response time histogram响应时间直方图一眼看出延迟分布是集中还是长尾Latency distribution90% in 0.0021 secs这样的分位数内网压测重点盯99%那一行Details 分阶段明细DNSdialup建连、DNS-lookup解析、req write写请求、resp wait首字节等待、resp read读响应各自的均值/最快/最慢。判读技巧DNS-lookup几乎为 0 说明直连 IP 生效DNSdialup偏高而resp wait正常问题多半在端口映射链路或负载均衡建连resp wait独占大头则说明瓶颈在服务本身处理逻辑。需要留档或二次分析时用 CSV 模式导出8 列response-time、DNSdialup、DNS、Request-write、Response-delay、Response-read、status-code、offset格式说明见 requester/print.gohey -c 50 -n 500 http://10.96.0.10:8080/api/hello -o csv result.csv内网压测最佳实践清单✅ 用-z固定持续时间压测避免请求数跑完才停导致各轮数据不可比✅ 关键接口先小规模-n 200 -c 20冒烟确认 200 状态码占主体后再拉高-c✅ 网关按域名路由时务必-host声明真实服务域名✅ 压测机与被测集群分置不同节点排除本机 CPU/网络争抢✅ 出现异常想立即停掉时直接CtrlChey 收到中断信号会优雅停止并照常输出已采集的统计信号处理见 hey.go✅ 结果用-o csv落盘便于对比不同容量配置并发数、核心数、keep-alive 开关。掌握 127.0.0.1、端口映射与集群 IP 这三种目标的压测套路后无论微服务部署在裸机、容器还是 K8s 集群里Hey 都能一条命令给出可信的吞吐与延迟基线成为内网容量规划与发布前验收的标配工具。【免费下载链接】heyHTTP load generator, ApacheBench (ab) replacement项目地址: https://gitcode.com/GitHub_Trending/he/hey创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表