Haproxy 2.6.8 behavior change since 2.6.7


We’ve upgraded haproxy from 2.6.7 to 2.6.8 and started to observe unusual change in behavior.

Our configuration (simplified) is:

  maxconn 4096
  pidfile haproxy.pid
  stats socket ha.sock level admin

  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 cookie default-0 check inter 3s rise 1 fall 2 maxqueue 5 maxconn 1
  server default-1 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?


I suggest you open a new Github issue, its very possible that this change in behavior is unexpected.


Done: Problem with connections in 2.6.8 · Issue #2033 · haproxy/haproxy · GitHub