mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-08-10 00:57:02 +02:00
The max weight of server is 256 now, but SRV_UWGHT_MAX is still 255. As a result, FWRR will not work well when server's weight is 256. The description is as below: There are some macros related to server's weight in include/types/server.h: #define SRV_UWGHT_RANGE 256 #define SRV_UWGHT_MAX (SRV_UWGHT_RANGE - 1) #define SRV_EWGHT_MAX (SRV_UWGHT_MAX * BE_WEIGHT_SCALE) Since weight of server can be reach to 256 and BE_WEIGHT_SCALE equals to 16, the max eweight of server should be 256*16 = 4096, it will exceed SRV_EWGHT_MAX which equals to SRV_UWGHT_MAX*BE_WEIGHT_SCALE = 255*16 = 4080. When a server with weight 256 is insterted into FWRR tree during initialization, the key value of this server should be SRV_EWGHT_MAX - s->eweight = 4080 - 4096 = -16 which is closed to UINT_MAX in unsigned type, so the server with highest weight will be not elected as the first server to process request. In addition, it is a better choice to compare with SRV_UWGHT_MAX than a magic number 256 while doing check for the weight. The max number of servers for round-robin algorithm is also updated. Signed-off-by: Godbach <nylzhaowei@gmail.com> |
||
---|---|---|
.. | ||
design-thoughts | ||
internals | ||
acl.fig | ||
architecture.txt | ||
close-options.txt | ||
coding-style.txt | ||
configuration.txt | ||
cookie-options.txt | ||
gpl.txt | ||
haproxy-en.txt | ||
haproxy-fr.txt | ||
haproxy.1 | ||
lgpl.txt | ||
proxy-protocol.txt | ||
queuing.fig |