加权轮询应在后端服务器能力明显不均时使用,如硬件配置差异超20%、运行额外中间件或跨机房高延迟场景;按CPU核心数初设权重(如8核:4核:2核→weight=4:2:1),建议最大比值≤5:1,并配合健康检查与日志验证。

当后端服务器 CPU、内存或磁盘 I/O 能力明显不同时,用默认轮询会导致强机“吃不饱”、弱机“扛不住”。加权轮询就是为解决这个问题设计的——它让性能强的机器多干活,弱的少分担,整体吞吐更稳、响应更均衡。
什么时候该用加权轮询
不是所有差异都要调权重。一般满足以下任一条件就建议启用:
- 服务器硬件配置差异超过 20%(比如一台是 16 核 64G,另一台是 4 核 16G)
- 部分服务器运行了额外中间件(如 Redis 或日志采集 agent),实际可用资源打折扣
- 某些节点部署在高延迟网络区(如跨机房),但又不能下线,需降低其请求占比
怎么配 weight 参数
在 upstream 块里给每台 server 加 weight=数值,数值越大,分到的请求越多。Nginx 不要求权重必须是整数,也不强制归一化,它按比例分配:
例如:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
upstream backend {
server 192.168.1.100:8080 weight=4; # 高配主机
server 192.168.1.101:8080 weight=2; # 中配主机
server 192.168.1.102:8080 weight=1; # 低配主机(测试机或旧设备)
}总权重 = 4 + 2 + 1 = 7,那么三台机器分别承担约 57%、29%、14% 的请求量。注意:weight 默认是 1,不写就等同于 weight=1。
权重设置的实用技巧
- 从 CPU 核心数起步估算:比如 8 核 / 4 核 / 2 核,可初设 weight=4/2/1;再结合压测响应时间微调
- 避免极端值:weight 设成 100 和 1 容易导致小权重节点长期空闲,也难观察真实负载,建议最大比值控制在 5:1 以内
- 配合健康检查使用:加上 max_fails=3 fail_timeout=30s,故障时自动降权剔除,恢复后再平滑加回
- 别忘了 reload 配置:改完 nginx.conf 后执行 nginx -t && nginx -s reload,不重启进程也能生效
怎么验证权重是否起作用
最直接的方式是查 Nginx 访问日志,加一个 $upstream_addr 变量记录实际转发目标:
在 server 或 location 块中加:
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" $upstream_addr';然后发起一批请求(比如用 curl 或 ab 工具),统计各 IP 出现次数占比,应与 weight 比例基本吻合。偏差超过 ±5% 就值得检查网络、后端响应延迟或配置是否被覆盖。


















