On Fri, Sep 24, 2021 at 10:05:19AM +0200, Christopher Faulet wrote: > > So I guess I did just misunderstand the documentation and it would be nice > > to just clarify it in the docs that haproxy does not support HTTP/1.1 > > pipelining. > > I agree. Pipelining should at least be removed from "option > http-server-close" description. And section 1.1 should be reword to be clear > on this point.
Both of you are both a bit right and a bit wrong :-) But it's a matter of wording and you're not speaking exactly about the same thing. HAProxy *does* support request pipelining, it will just serialize what it receives and will not do pipelining on the other side. This is particularly important, especially with in the context of the HTTP model, because pipelining is only useful on high latency links over the net, and used not to work with a number of servers (and even broke a few times in haproxy itself). Before H2 was released, some browsers (mostly Opera) used to rely on tricks to try to detect whether pipelining was broken or not on the server and to enable it. When it worked (with a modern server or with haproxy installed in front of a modern server), it used to provide a very noticeable performance gain, especially on slow or congested links, where a client could send 10 requests at once and receive 10 responses at once, while on the other side you'd observe 10 fast request/response cycles. I've reread what is said in the option http-server-close and timeout http-keep-alive sections and what is mentioned there remains perfectly valid as it explicitly designates the communication with the client, so for me there is nothing to change there. Hoping this helps, Willy