У меня странная проблема при использовании HAProxy для балансировки нагрузки некоторых веб-серверов. Реакция через балансировку нагрузки иногда становится очень медленной ...
Мой сценарий:
global
daemon
quiet
maxconn 4096
nbproc 2
listen XMLRPC 0.0.0.0:8888
mode http
balance roundrobin
option httpclose
option forwardfor
server Srv1(10.199.100.111:8082) 10.199.100.111:8082 check inter 10
server Srv2(10.199.100.112:8084) 10.199.100.112:8084 check inter 10
listen Custom1 0.0.0.0:60080
mode http
balance roundrobin
option httpclose
option forwardfor
server Srv1(10.199.100.111:60081) 10.199.100.111:60081 check inter 10
server Srv2(10.199.100.112:60083) 10.199.100.112:60083 check inter 10
listen Statistics 0.0.0.0:7000
balance
timeout connect 60000
timeout client 60000
timeout server 60000
option httpclose
mode http
stats enable
stats uri /
stats hide-version
stats auth admin:admin
Когда я извлекаю балансировщики нагрузки и подключаюсь к веб-серверам напрямую, этой проблемы не возникает, но тогда у меня нет балансировки нагрузки / аварийного переключения, так что это не то, что я хочу.
У кого-нибудь есть указание на то, что здесь не так? Почему одни запросы выполняются молниеносно, а другие - очень медленно (10-15 секунд)?
Заранее спасибо!
Я не вижу ничего явно плохого. У вас нет тайм-аута, что плохо, но это не связано. Вы должны включить ведение журнала, он скажет вам, где запрос потратил время. Для этого используйте «option httplog» и «log 127.0.0.1 local0», затем настройте ваш syslogd на получение журналов через сокет UDP (например: syslogd -r).
Хммм да что-то не так в вашем конфиге. Вы проверяете серверы 100 раз в секунду, что может быть для них слишком много. Заменить "inter 10" на "inter 10s".
Вилли