加权轮询是nginx实现老旧服务器降权运行最直接稳妥的方式,通过weight参数按比例分配请求,如weight=1的老服务器承接约12.5%流量,并配合健康检查与超时调优确保稳定。

加权轮询(Weighted Round Robin)是 Nginx 实现老旧服务器“降权运行”的最直接、最稳妥的方式——不淘汰、不隔离,只降低其承接流量的比例,让新老服务器共存过渡。
为什么加权轮询适合老旧服务器降权
老旧服务器通常存在 CPU 性能弱、内存小、磁盘响应慢等问题,但仍有服务能力。若用默认轮询,它会和新服务器均分请求,容易成为瓶颈;而加权轮询允许你用 weight 参数显式声明“这台机器能力只有新机的 1/3”,Nginx 会按比例分配请求,天然适配渐进式降权场景。
具体配置:给老旧服务器设低 weight 值
在 upstream 块中为每台后端服务器指定 weight,数值越小,分到的请求越少:
server 192.168.1.10:8080 weight=5; # 新服务器(高性能)
server 192.168.1.11:8080 weight=2; # 中等服务器
server 192.168.1.12:8080 weight=1; # 老旧服务器(降权运行)
}
总权重 = 5 + 2 + 1 = 8,老旧服务器理论承接流量占比为 1/8 ≈ 12.5%。实际请求分配会严格按该比例周期性轮转,避免突发压垮。
配合健康检查,自动规避彻底失效的老设备
仅靠 weight 不足以应对硬件老化引发的偶发故障。建议启用 Nginx 原生健康检查,确保老旧服务器一旦失联或超时,自动剔除:
- 添加
max_fails=2 fail_timeout=30s参数,连续失败 2 次后暂停转发 30 秒 - 搭配
health_check interval=5 fails=1 passes=2(需 stream 模块或 Plus 版本),实现细粒度探测 - 老旧服务器可单独设置更宽松的
proxy_read_timeout 90,避免因响应慢被误判为宕机
验证与调优建议
上线后需快速确认降权生效:
- 用
ab -n 1000 -c 50 http://your-domain/发起测试请求,再查各后端 access.log 的访问次数比,应接近 weight 比例(如 5:2:1) - 观察老旧服务器的 CPU 和 load,若仍持续超载,可进一步将 weight 从 1 降至 0.5(Nginx 支持小数 weight,最低支持 0.1)
- 长期运行中,可结合 Prometheus + nginx-vts-exporter 监控各节点 real-time request rate,动态调整 weight 值











