mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-13 15:04:42 +00:00
96e312139a
There are some very rare server-to-server applications that abuse the HTTP protocol and expect the payload phase to be highly interactive, with many interleaved data chunks in both directions within a single request. This is absolutely not supported by the HTTP specification and will not work across most proxies or servers. When such applications attempt to do this through haproxy, it works but they will experience high delays due to the network optimizations which favor performance by instructing the system to wait for enough data to be available in order to only send full packets. Typical delays are around 200 ms per round trip. Note that this only happens with abnormal uses. Normal uses such as CONNECT requests nor WebSockets are not affected. When "option http-no-delay" is present in either the frontend or the backend used by a connection, all such optimizations will be disabled in order to make the exchanges as fast as possible. Of course this offers no guarantee on the functionality, as it may break at any other place. But if it works via HAProxy, it will work as fast as possible. This option should never be used by default, and should never be used at all unless such a buggy application is discovered. The impact of using this option is an increase of bandwidth usage and CPU usage, which may significantly lower performance in high latency environments. This change should be backported to 1.4 since the first report of such a misuse was in 1.4. Next patch will also be needed. |
||
---|---|---|
.. | ||
acl.h | ||
auth.h | ||
backend.h | ||
buffers.h | ||
capture.h | ||
checks.h | ||
counters.h | ||
fd.h | ||
freq_ctr.h | ||
global.h | ||
hdr_idx.h | ||
lb_chash.h | ||
lb_fwlc.h | ||
lb_fwrr.h | ||
lb_map.h | ||
log.h | ||
pattern.h | ||
peers.h | ||
pipe.h | ||
port_range.h | ||
proto_http.h | ||
proto_tcp.h | ||
protocols.h | ||
proxy.h | ||
queue.h | ||
server.h | ||
session.h | ||
signal.h | ||
stick_table.h | ||
stream_interface.h | ||
task.h | ||
template.h |