nginx加权轮询的实际流量分配比例等于单台服务器weight值除以所有server weight总和,如weight=3、5、2时占比分别为30%、50%、20%,长期运行趋近该比例,非严格固定次序。

Nginx加权轮询的实际流量分配比例,不是按请求次数简单累加,而是基于权重总和的占比计算,长期运行下趋近该比例。
加权轮询流量分配比例怎么算
实际分配比例由各 server 的 weight 值与所有 weight 总和的比值决定:
单台服务器理论流量占比 = 该 server 的 weight ÷ 所有 server weight 之和
例如配置:
upstream backend {
server 192.168.1.10 weight=3;
server 192.168.1.11 weight=5;
server 192.168.1.12 weight=2;
}
- 总权重 = 3 + 5 + 2 = 10
- 192.168.1.10 占比 = 3/10 = 30%
- 192.168.1.11 占比 = 5/10 = 50%
- 192.168.1.12 占比 = 2/10 = 20%
这个比例是 Nginx 内部调度器在多次请求中平滑收敛的目标值,不是每 10 次请求严格固定为 3–5–2 的顺序。
权重设置要注意什么
- weight 只支持正整数,默认为 1,不支持小数或 0
- 不需要手动归一化(比如不用写成 0.3 / 0.5 / 0.2),Nginx 自动按总和归一
- 避免权重差异过大(如 1 和 100 并存),否则低权服务器可能长时间收不到请求
- 权重反映的是相对服务能力,建议结合实测 QPS、CPU 利用率、I/O 能力综合设定
实际调度不是“机械轮换”
Nginx 使用改进的加权轮询算法(Weighted Round Robin),内部维护一个当前权重计数器,每次选节点时动态调整,保证:
- 短期可能有波动,但长期统计非常接近理论比例
- 不会出现连续大量请求扎堆到高权节点的情况
- 仍保留轮询节奏感,兼顾公平性与权重导向
注:该机制从 Nginx 1.9.1 起稳定支持,无需额外模块。











