Hi,
On Mon, Feb 04, 2019 at 04:05:15PM +0000, Juan Pablo Mora wrote:
>
> During a period of slowness of my database I see this log (HAProxy 1.7.5):
>
>
> Feb 4 11:09:30 localhost.localdomain haproxy[23601]: 185.198.176.21:41987
> [04/Feb/2019:11:09:12.408] WWW BUS/BUS2 9/8785/2/8860/17657 200 596 8453 - -
> cQ-- 528/236/37/14/0 0/9 {|3701F3DB6BBF1DAC} {|RESULT_OK_HEADER} "POST
> /Service HTTP/1.1" TLSv1
>
>
> My timeouts configs are:
>
> defaults
> timeout connect 4s
> timeout client 5s
> timeout server 30m
> timeout http-request 10s
> timeout http-keep-alive 3s
>
> backend BUSINCOMING
> option forwardfor
>
> timeout connect 5s
> timeout server 2m
> timeout queue 30s
>
> http-request deny if { hdr_cnt(content-length) gt 0 } {
> hdr_val(content-length) gt 31457280 } # 30M
>
> server BUS1 po_emi_0:18001 maxconn 15
> server BUS2 ix_emi_0:18001 maxconn 15
>
> The request ends with 200, request and response headers was captured. If it
> was a timeout client, Why isn't there a -1 in some timer? And how the "Q"
> termination state can be explained?
I think you've met a corner case here. The client timeout has probably
triggered during the upload but the request was already in the queue and
was sent as is and processed by the server. But the most likely cause is
that in fact the request was complete, the client timeout should have been
disabled but it wasn't and it triggerred while the request was waiting in
the queue.
How does it behave on more up to date versions ? (this one is missing
many fixes).
Thanks,
Willy