Hi!

While trying to reproduce Igor's problem, I noticed some strange behavior
in the stats output:

A server has an initial weight of 100, and unix socket, html and csv
outputs match. But when I modify the weight (in this case, I set it again
to 100), then the unix socket shows the correct weight of 100, but csv and
html output shows a weight value of 10000:

$ echo "get weight b1-n/f1"| socat stdio /tmp/haproxy
100 (initial 100)
$ curl -s "http://admin:passw0rd@10.0.0.55/ha-stats;csv"; | grep "b1-n,f1"
b1-n,f1,0,0,0,0,,0,0,0,,0,,0,0,0,0,UP,100,1,0,0,0,389,0,,1,2,1,,0,,2,0,,0,L7OK,200,10,0,0,0,0,0,0,0,,,,0,0,,,,,
$ echo "set weight b1-n/f1 100"| socat stdio /tmp/haproxy
$ echo "get weight b1-n/f1"| socat stdio /tmp/haproxy
100 (initial 100)
$ curl -s "http://admin:passw0rd@10.0.0.55/ha-stats;csv"; | grep "b1-n,f1"
b1-n,f1,0,0,0,0,,0,0,0,,0,,0,0,0,0,UP,10000,1,0,0,0,406,0,,1,2,1,,0,,2,0,,0,L7OK,200,9,0,0,0,0,0,0,0,,,,0,0,,,,,
$



I understand that the "get weight" command on the unix socket simply uses
sv->uweight (src/dumpstats.c line 1097), while the html/csv output is
using a more complex calculation (src/dumpstats.c line 2303 + line 2388):
 (sv->eweight * px->lbprm.wmult + px->lbprm.wdiv - 1) / px->lbprm.wdiv


It did not look into it any deeper, as that would mean reading code until
I understanding the meaning of those variables :)


Any ideas here?




Thanks,

Lukas                                     

Reply via email to