Nginx权重分发是按配置数值比例分配流量,需在upstream块内server指令中正确设置weight参数,仅对round_robin和ip_hash算法生效,应基于实测P95延迟计算并配合健康检查等机制使用。
权重分发不是让 Nginx “看懂”后端性能,而是用可配置的数值,把流量按比例导向不同节点,前提是这个比例确实反映它们的真实处理能力。配得准,集群吞吐就高、延迟就稳;配错了,高权重点可能被打满,低权重点却闲着。
weight 参数只在 upstream 块内、server 指令中生效,且必须紧贴 IP 和端口之后:
server 10.0.0.5:8080 weight=3;
server 10.0.0.5:8080; 再另起一行 weight=3;
weight=2.5)、负数或字符串——nginx -t 直接报错weight 仅在默认的 round_robin 和 ip_hash 下起作用:
CPU 核心数、内存大小不能直接换算成 weight。真实瓶颈常在 IO、网络或应用逻辑。建议做法:
单靠静态 weight 无法应对 GC 停顿、慢查询或网络抖动。必须组合使用:
max_fails=3 fail_timeout=30s,配合 proxy_next_upstream error timeout http_500...,失败后自动切走upstream 块加 keepalive 32,proxy 区域配 proxy_http_version 1.1 和 proxy_set_header Connection ''
proxy_connect_timeout 3s、proxy_read_timeout 设为业务 P99 延迟的 1.2–1.5 倍$upstream_addr 出现频次,观察是否趋近理论比例(数百请求以上才稳定)