You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx Round-Robin轮询未严格交替请求问题咨询

Nginx Round-Robin轮询未严格交替请求的原因分析

你遇到的这个情况其实是Nginx默认轮询策略结合连接复用机制导致的,并非配置错误,下面给你拆解具体原因:

  • 连接复用(Keepalive)的核心影响
    Nginx默认会和上游服务器建立长连接,同时像wget这类主流客户端工具现在也默认启用了Keepalive。如果客户端和Nginx保持同一个长连接,那么该连接内发送的所有请求都会被Nginx转发到同一台上游服务器。比如你连续执行多次wget时,若工具复用了和Nginx的长连接,这些请求就会全部落到同一台machine上,直到连接断开才会切换到下一台。

  • 轮询粒度是连接而非单个请求
    默认的Round-Robin策略是为每个新的客户端连接分配下一个上游服务器,而非为每个单独的请求分配。也就是说,只要客户端保持同一个连接,不管发多少请求,都会走同一台上游。只有当客户端新建一个连接时,Nginx才会切换到轮询列表里的下一台服务器。

  • 上游响应速度的微小差异
    即使没有连接复用,如果某台上游服务器的响应速度比另一台快一点点,它会更快地回到Nginx的可用服务器池中,此时若刚好有新请求进来,就可能被优先分配给这台服务器,出现连续请求的情况。不过这种情况只会偶尔发生,整体请求比例还是会维持在接近50/50的水平,和你描述的现象一致。

验证方法

你可以试试用关闭Keepalive参数的请求工具测试,比如用curl:

curl --no-keepalive http://localhost

多执行几次,应该就能看到请求严格交替分配到两台上游服务器了。

内容的提问来源于stack exchange,提问作者jsrz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:13:48