That is an interesting questions as intuitively, people could think the
former behavior applies.
If I got the source code
<https://trac.nginx.org/nginx/browser/nginx/src/http/ngx_http_upstream_round_robin.c#L507>
right, and as the docs
<https://nginx.org/en/docs/http/ngx_http_upstream_module.html#upstream>
state, nginx is following a weighted round-robin
https://en.wikipedia.org/wiki/Weighted_round_robin algorithm.
It thus means it will go over the same list of servers everytime a peer
needs to be chosen (ie for every request), and pick the first not having
depleted its weight allocation.
To me, it would use the latter of your proposals.
Please correct me if I am wrong, so incorrect information does not
propagate too much. :o)
---
*B. R.*
On Wed, Apr 12, 2017 at 11:50 PM, Frank Liu <gfrankliu@gmail.com> wrote:
> Hi,
>
> How does nginx balances traffic to upstream with different weight? If I
> have 3 servers in upstream, with weight 1, 2, 4, assuming all are healthy,
> will nginx send traffic to server 1, 2, 3, 2, 3, 3, 3 or 1, 2, 2, 3, 3, 3,
> 3? If I have two servers with both weight 50, will nginx will 50 requests
> to server 1, and then 50 to server 2, or will it calculate the ration to be
> 1:1 and send one after another?
>
> Thanks!
> Frank
>
>
> _______________________________________________
> nginx mailing list
> nginx@nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx
>
_______________________________________________
nginx mailing list
nginx@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx