On Mon, Jan 25, 2016 at 02:49:18AM +0100, Willy Tarreau wrote:
> I want to understand why we're seeing a freeze at exactly 16000 bytes.
> We have it in 1.5 too.

... and it's not the first time I get caught by this one. The bug is
in "ab". It suffers from the same early bugs we used to have in haproxy
at the beginning of openssl in non-blocking mode. It properly reads all
the data from the socket, cannot process all of them at once for whatever
reason, and goes back to poll without trying to extract more data from
the SSL buffers first. Thus haproxy sends the data to ab and waits for
the next request, and ab waits for haproxy to send more data. Deadlock
and timeout. That's also why it only happens with keep-alive. That's
clearly visible when using strace to count bytes. Wrk doesn't exhibit
this behaviour (but has other ones I don't remember).

I know I should be cautious about "ab" and "nc", and regularly I get
trapped by their bugs in buffer management. The good news is that we
don't have this nasty bug to fix in 1.6 nor 1.5 :-)

Cheers,
Willy


Reply via email to