We've found that just switching back to 1.7.9 makes this issue disappear. It's 
a really hard one to pin down though. It's quite rare and we've had no luck 
building a reliable reproducing script.

Is there anything more we can provide to give insight into why haproxy might 
sometimes hang during request processing?

B.

> On 8 May 2018, at 16:54, Nick Vatamaniuc <vatam...@gmail.com> wrote:
> 
> Hello,
> 
> Sometimes PUT/POST request bodies don't get proxied. Headers are sent
> through, server then waits for the body to be sent but the body data never
> arrives and the socket times out after 5 minutes.
> 
> This seems to be a regression in 1.8, reverting to 1.7.9 fixes the issue.
> 
> haproxy version: 1.8.7. 3 backend servers. Using Lua on all the request paths.
> nbproc > 1 and not using threads.
> 
> Normally the setup handles 500k to 1.5m successful PUT/POST requests per day.
> About 5-10 or so end up failing as described above.
> 
> 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
> 
> More details about the failing requests:
> 
>   Body size: about 30k-50k
>   Tw = 0
>   Tc = 0 in 90% and Tc=1 in 10% of the cases
>   Tq is about 5-10 on average (with some outliers)
>   actconn/feconn: 140 on average
>   beconn: 30 on average
>   Termination state: ---- for all requests
>   None are http/2
> 
> Things we tried which failed to fix the issue:
> 
> Upgraded to haproxy 1.8.8 + git up to 80e179128cfd78d95cdebf7195fd21299e7931b6
> 
> Disabled HTTP/2. None of the failing connections are HTTP/2, but was trying to
> test the theory that successful HTTP/2 connections somehow altered the
> internal state of the server and affected those failing requests.
> 
> The only thing that fixed the issue was downgrading to haproxy 1.7.9
> 
> Thank you,
> -Nick
> 
> 
> 
> /usr/sbin/haproxy -vv
> 
> HA-Proxy version 1.8.7 2018/04/07
> Copyright 2000-2018 Willy Tarreau <wi...@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.0h  27 Mar 2018
> Running on OpenSSL version : OpenSSL 1.1.0h  27 Mar 2018
> OpenSSL library supports TLS extensions : yes
> OpenSSL library supports SNI : yes
> OpenSSL library supports : TLSv1.0 TLSv1.1 TLSv1.2
> 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.30 2017-08-14
> 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


Reply via email to