Hello,
We’ve upgraded haproxy from 2.6.7 to 2.6.8 and started to observe unusual change in behavior.
Our configuration (simplified) is:
global
maxconn 4096
master-worker
pidfile haproxy.pid
stats socket ha.sock level admin
defaults
mode http
retries 1
option redispatch
maxconn 2000
balance roundrobin
stats uri /haproxy
stats realm Global\ statistics
timeout connect 10s
timeout queue 60s
timeout client 305s
option http-server-close
log stdout format raw daemon
option httplog
listen family_default
bind ipv6:8888 alpn http/1.1
cookie SERVERID rewrite
http-request set-header X-Balancer-Current-Cookie SERVERID
server default-0 127.0.0.1:8888 cookie default-0 check inter 3s rise 1 fall 2 maxqueue 5 maxconn 1
server default-1 127.0.0.1:8889 cookie default-1 check inter 3s rise 1 fall 2 maxqueue 5 maxconn 1
option httpchk GET /
The backend here are very simple python echoserver, which is not threaded and does not set the cookie.
After starting haproxy I can access the frontend, and it round robins correctly between backends.
When I’ll start to load the server:
while :; do curl -m 2 http://[ipv6]:8888/ ; done
After few moments I see that:
- the curl client timeouts
- in the log I see:
family_default family_default/ -1/-1/-1/-1/80845 400 0 - - CR-- 16/16/14/0/0 0/0 “”
family_default family_default/ 0/60001/-1/-1/60001 503 217 - - sQNN 15/15/13/0/0 0/1 “GET / HTTP/1.1” - I attached screenshot of the /haproxy stats page:
- as soon as I downgrade to 2.6.7-c55bfdb, such problem does not happen
So, have I found an issue (found nothing on github, or it is just my incorrect configuration? Maybe some kind of reveal of the upgrade to 2.6.8?
Regards,
Łukasz