Nick Vatamaniuc
2018-11-08 16:26:25 UTC
Hello,
I'd like to report an issue where sometimes PUT/POST request bodies do not
get proxied. Headers are sent then the backend server waits to receive the
body. It never arrives and after 5 minutes the socket times out. This
happens in all the 1.8 releases up until 1.8.14 but it doesn't happen in
1.7. In fact one of the ways we mitigate the issue is by reverting back to
1.7.
Normally the requests go through without an issue. We see about 1M+
requests per day. However about 5 or 10 of those end up failing as
described. Is there anything we can do to debug the issue further, or were
there any changes that might lead to this specific bug in 1.8.x?
More details about our setup:
Lua is used on all requests
nbproc > 1
Not using threads
Request body sizes about 30-50KB
Some config settings:
option http-server-close
option log-health-checks
option log-separate-errors
option redispatch
retries 4
timeout client 150000
timeout connect 5000
timeout queue 5000
timeout server 3600000
$ /usr/sbin/haproxy -vv
HA-Proxy version 1.8.14-52e4d43 2018/09/20
Copyright 2000-2018 Willy Tarreau <***@haproxy.org>
Build options :
TARGET = linux2628
CPU = generic
CC = gcc
CFLAGS = -m64 -march=x86-64 -O2 -g -fno-strict-aliasing
-Wdeclaration-after-statement -fwrapv -fno-strict-overflow -Wno-unused-label
OPTIONS = USE_SLZ=1 USE_REGPARM=1 USE_THREAD=1 USE_OPENSSL=1 USE_LUA=1
USE_SYSTEMD=1 USE_STATIC_PCRE2=1 USE_PCRE2_JIT=1 USE_TFO=1
Default settings :
maxconn = 2000, bufsize = 16384, maxrewrite = 1024, maxpollevents = 200
Built with OpenSSL version : OpenSSL 1.1.1 11 Sep 2018
Running on OpenSSL version : OpenSSL 1.1.1 11 Sep 2018
OpenSSL library supports TLS extensions : yes
OpenSSL library supports SNI : yes
OpenSSL library supports : TLSv1.0 TLSv1.1 TLSv1.2 TLSv1.3
Built with Lua version : Lua 5.3.4
Built with transparent proxy support using: IP_TRANSPARENT IPV6_TRANSPARENT
IP_FREEBIND
Encrypted password support via crypt(3): yes
Built with multi-threading support.
Built with PCRE2 version : 10.31 2018-02-12
PCRE2 library supports JIT : yes
Built with libslz for stateless compression.
Compression algorithms supported : identity("identity"),
deflate("deflate"), raw-deflate("deflate"), gzip("gzip")
Built with network namespace support.
Available polling systems :
epoll : pref=300, test result OK
poll : pref=200, test result OK
select : pref=150, test result OK
Total: 3 (3 usable), will use epoll.
Available filters :
[SPOE] spoe
[COMP] compression
[TRACE] trace
Thank you
-Nick Vatamaniuc
I'd like to report an issue where sometimes PUT/POST request bodies do not
get proxied. Headers are sent then the backend server waits to receive the
body. It never arrives and after 5 minutes the socket times out. This
happens in all the 1.8 releases up until 1.8.14 but it doesn't happen in
1.7. In fact one of the ways we mitigate the issue is by reverting back to
1.7.
Normally the requests go through without an issue. We see about 1M+
requests per day. However about 5 or 10 of those end up failing as
described. Is there anything we can do to debug the issue further, or were
there any changes that might lead to this specific bug in 1.8.x?
More details about our setup:
Lua is used on all requests
nbproc > 1
Not using threads
Request body sizes about 30-50KB
Some config settings:
option http-server-close
option log-health-checks
option log-separate-errors
option redispatch
retries 4
timeout client 150000
timeout connect 5000
timeout queue 5000
timeout server 3600000
$ /usr/sbin/haproxy -vv
HA-Proxy version 1.8.14-52e4d43 2018/09/20
Copyright 2000-2018 Willy Tarreau <***@haproxy.org>
Build options :
TARGET = linux2628
CPU = generic
CC = gcc
CFLAGS = -m64 -march=x86-64 -O2 -g -fno-strict-aliasing
-Wdeclaration-after-statement -fwrapv -fno-strict-overflow -Wno-unused-label
OPTIONS = USE_SLZ=1 USE_REGPARM=1 USE_THREAD=1 USE_OPENSSL=1 USE_LUA=1
USE_SYSTEMD=1 USE_STATIC_PCRE2=1 USE_PCRE2_JIT=1 USE_TFO=1
Default settings :
maxconn = 2000, bufsize = 16384, maxrewrite = 1024, maxpollevents = 200
Built with OpenSSL version : OpenSSL 1.1.1 11 Sep 2018
Running on OpenSSL version : OpenSSL 1.1.1 11 Sep 2018
OpenSSL library supports TLS extensions : yes
OpenSSL library supports SNI : yes
OpenSSL library supports : TLSv1.0 TLSv1.1 TLSv1.2 TLSv1.3
Built with Lua version : Lua 5.3.4
Built with transparent proxy support using: IP_TRANSPARENT IPV6_TRANSPARENT
IP_FREEBIND
Encrypted password support via crypt(3): yes
Built with multi-threading support.
Built with PCRE2 version : 10.31 2018-02-12
PCRE2 library supports JIT : yes
Built with libslz for stateless compression.
Compression algorithms supported : identity("identity"),
deflate("deflate"), raw-deflate("deflate"), gzip("gzip")
Built with network namespace support.
Available polling systems :
epoll : pref=300, test result OK
poll : pref=200, test result OK
select : pref=150, test result OK
Total: 3 (3 usable), will use epoll.
Available filters :
[SPOE] spoe
[COMP] compression
[TRACE] trace
Thank you
-Nick Vatamaniuc