Quantcast
Channel: Serverphorums.com - HAProxy
Viewing all articles
Browse latest Browse all 5112

2x filter + keep-alive regressions (1.7 affected) (1 reply)

$
0
0
Hello Christopher, William, Willy, et all!


Matt McDonagh reported a regression on discourse [1] in 1.7.6, that
causes haproxy to ignore "timeout http-keep-alive" when going through
filters (aka compression is enabled) and also causes logging to be
delayed.

Because timeouts are ignored and wrong timeouts strike, performance
issues are likely (as we don't close idle sessions as expected, we hit
maxconn sooner, etc).

The root cause are actually 2 different patches in 1.7 stable. This is
getting a bit complex here, because in 1.7 both patches cause
regressions, while in 1.8 only one of those 2 patches actually cause an
issue.


We are talking about:
2b553de BUG/MINOR: filters: Don't force the stream's wakeup when we wait in flt_end_analyze
c0c672a BUG/MINOR: http: Fix conditions to clean up a txn and to handle the next request


Repro config (I used netcat for a HTTP/1.1 request):

global
maxconn 100
log 10.0.0.4 syslog debug
defaults
log global
mode http
option httplog
option http-server-close
#option http-keep-alive
timeout connect 5s
timeout client 10s
timeout server 20s
timeout http-keep-alive 1s
frontend myfrontend
bind :80
default_backend mybackend
backend mybackend
compression algo gzip
server www www.lan.ltri.eu:80


In v1.7.4 (everything fine):
"mode http-server-close":
as expected (logs immediately, closes idle keep-alive at
"timeout http-keep-alive")

"mode http-keep-alive":
as expected (logs immediately, closes idle keep-alive at
"timeout http-keep-alive")


In v1.7.5 (due to b0c3fd3b BUG/MINOR: filters: Don't force the stream's wakeup when we wait in flt_end_analyze):
"mode http-server-close":
log stalled and keep-alive idle close at "timeout connect";
ignores "timeout http-keep-alive"

"mode http-keep-alive":
log stalled and keep-alive idle close at "timeout connect + client";
ignores "timeout http-keep-alive"


In v1.7.6 (due to 73d071e BUG/MINOR: http: Fix conditions to clean up a txn and to handle the next request):
"mode http-server-close":
log stalled and keep-alive idle close at "timeout client";
ignores "timeout http-keep-alive"

"mode http-keep-alive":
log stalled for "timeout server"; keep-alive stalled for
"timeout server (then log) + timeout http-keep-alive"



As for 1.8:
Patches have been applied as per Author-Date, while in 1.7 the
patches have been applied in reverse order.

"BUG/MINOR: http: Fix conditions to clean up a txn and to handle the next request"
-> does not cause issues in 1.8

"BUG/MINOR: filters: Don't force the stream's wakeup when we wait in flt_end_analyze"
-> has the same effect as in 1.7(.6).


The 1.6/1.5 situation is unkown at this time.


Let me know if something is unclear (I'm almost certain it is) ...



cheers,
lukas


[1] http://discourse.haproxy.org/t/keep-alive-behaviour-change-since-1-7-6/1390

Viewing all articles
Browse latest Browse all 5112

Latest Images

Trending Articles



Latest Images