On Wed, Apr 12, 2017 at 02:50:08PM -0700, Frank Liu wrote: Hi there,
> 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 you want to know what your current nginx version does, it should not be too difficult to test: One nginx.conf. One http section. One upstream{} listing multiple ip:ports. One server{} which proxy_pass:es to that upstream. Multiple server{}s, each of which listens on one ip:port, writes to a different access_log, and does something like "return 200 ok;". Then for increasing numbers X, "GET /X" on the main server. Look at the individual access log files to see which server handled /1, which handled /2, etc. By the time you get to 700, you'll either see that there is a reliably repeating pattern, or you'll see that it is probably randomish. If you actually care about what pattern is used; or if you want to guarantee that the same pattern will be used in future nginx versions; then get your preferred code written and use that instead of whatever nginx uses. If you want to know what guarantee there is that the behaviour will not change in the future: I'd say "none", except that there is a good chance that what is written in the documentation will be honoured. Paraphrasing that, for the above case: for 7 requests, 1 will go to the first server; 2 to the second; and 4 to the third. > 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? Same answer: it does not seem to difficult to test, if you don't want to read the available source. Good luck with it! f -- Francis Daly fran...@daoine.org _______________________________________________ nginx mailing list nginx@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx