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