nginx双机热备压测核心是验证故障切换的业务连续性与稳定性,需覆盖主备切换全过程,重点测接管时间(≤3–5秒)、失败率、切换后承载能力,并通过vip漂移、keepalived日志、nginx错误码等多维监控交叉判定。

在 Nginx 双机热备(Active-Standby)架构下做性能压测,核心目标不是单纯测单节点极限,而是验证故障切换时的业务连续性、流量接管能力与系统响应稳定性。压测必须覆盖主备切换全过程,而非仅静态负载场景。
明确压测边界:区分“负载能力”与“切换可靠性”
双机热备的本质是高可用,不是负载分担。压测重点应放在:
- 主节点正常服务时,整体吞吐与延迟基线(用于后续对比)
- 主节点主动宕机或网络隔离后,备用节点接管时间(通常要求 ≤ 3–5 秒)
- 接管过程中请求失败率、超时率、重试行为是否符合预期
- 切换完成后,新主节点能否稳定承载原流量,无连接堆积或 502/504 暴增
搭建贴近真实的压测环境
避免在单机模拟双机,需真实复现心跳检测、VIP 漂移、Nginx 进程状态同步等关键环节:
- 使用 Keepalived + VIP 实现主备控制,确保 VIP 切换逻辑与生产一致
- 两台 Nginx 服务器配置完全相同(含 worker_processes、keepalive_timeout、upstream 超时参数等)
- 后端真实部署可监控的服务(如简单 HTTP 接口),便于观察上下游影响
- 压测客户端(如 wrk 或 JMeter)应固定访问 VIP,不直连物理 IP
设计分阶段压测用例
按时间轴推进,模拟典型故障路径:
- 稳态压测:持续 5 分钟中等并发(如 1000 QPS),确认主节点服务稳定、监控指标正常
- 突变压测:在稳态中突然 kill 主节点 nginx 进程,记录从请求异常开始到恢复成功的完整时间线
- 压测中切换:在高并发(如 3000 QPS)下触发主节点故障,观察备用节点是否因瞬时洪峰导致连接拒绝或超时上升
- 切换后压测:待 VIP 漂移完成,立即对新主节点发起 2 分钟持续压测,验证其独立服务能力
关键监控与判定依据
仅看响应时间或成功率不够,需关联多维度数据交叉判断:
- VIP 所在主机的网卡收发包、ARP 表更新日志(确认漂移动作已生效)
- Keepalived 日志中的 STATE TRANSITION 记录(如 “MASTER → BACKUP”)
- Nginx access.log 中 502/504/timeout 请求的时间戳分布,匹配切换时刻
- 后端服务的请求到达时间、处理耗时,排除误判为 Nginx 故障实为上游问题
不复杂但容易忽略的是:压测期间必须关闭非必要日志输出(如 debug 级 access_log),否则磁盘 I/O 可能成为瓶颈,干扰切换时效判断。同时确保两台机器时间同步(chrony),方便日志对齐分析。











