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