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

Reply via email to