least_conn算法在连接数相同时退回到加权轮询:按weight值动态分配,未设weight则按配置顺序轮询,全程确定性决策,不依赖响应时间或CPU等指标。

当两台(或更多)后端服务器的活跃连接数完全相同时,Nginx 的 least_conn 算法会退回到加权轮询(weighted round-robin)逻辑来决定目标节点。
连接数相同时按权重比例分配
此时 Nginx 不再仅看连接数,而是依据各 server 配置的 weight 值,按平滑加权轮询算法进行选择:
- weight 值越高,该节点在相同连接数前提下被选中的概率越大
- 例如:
server A weight=3、server B weight=1,两者连接数都是 2,则 A 被选中的机会约为 B 的 3 倍 - 这个过程是动态累积的,Nginx 内部维护一个当前权重计数器,确保长期分配符合权重比例
权重为默认值时按配置顺序轮询
如果所有 server 都未显式设置 weight(即全部为默认值 1),那么连接数相同时就等效于普通轮询:
- 按 upstream 块中 server 的书写顺序依次选取
- 比如
server 10.0.1.1:80;在前,server 10.0.1.2:80;在后,则交替分发
不依赖其他因素,也不随机
该决策过程是确定性的,不引入随机性,也不参考响应时间、CPU 或健康状态(除非已失效被剔除):
- 只要节点处于“健康可用”状态(未被
down、backup标记,也未因max_fails被临时摘除),就参与比较 - 算法本身不判断“哪个更空闲”,只做连接数比较 + 权重兜底
- 若某节点连接数低但已故障(如卡住未断连),必须靠健康检查机制提前剔除,否则仍可能被选中


















