mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2026-01-20 09:31:42 +01:00
Since the following mentioned patch, a send-list mechanism was implemented to improve streams priorization on sending. commit 20f2a425ffeda2e623aac4c702f4e44b1e122d1d MAJOR: mux-quic: rework stream sending priorization This is done to prevent the same streams to always be used as first ones on emission. However there is still a flaw on the algorithm. Once put in the send-list, a streams is not removed until it has sent all of its content. When a stream transfers a large object, it will remain in the send-list during all the transfer and will soon monopolize the first place. the stream does never leave its position until the transfer is finished and will monopolize the first place. Other streams behind won't have the opportunity to advance on their own transfers due to a Tx buffer exhaustion. This situation is especially problematic if a small timeout client is used. As some streams won't advance on their transfer for a long period of time, they will be aborted due to a stream layer timeout client causing a RESET_STREAM emission. To fix this, during sending each stream with at least some bytes transferred from its tx.buf to qc_stream_desc out buffer is put at the end of the send-list. This ensures that on the next iteration streams that cannot transfer anything will be used in priority. This patch improves significantly h2load benchmarks for large objects with several streams opened in parallel on a single connection. Without it, errors may be reported by h2load for aborted streams. For example, this improved the following scenario on a 10mbit/s link with a 10s timeout client : $ ./build/bin/h2load --npn-list h3 -t 1 -c 1 -m 30 -n 30 https://198.18.10.11:20443/?s=500k This fix may help with the github issue #2004 where chrome browser stop to use QUIC after receiving RESET_STREAM frames. This should be backported up to 2.7.
The HAProxy documentation has been split into a number of different files for ease of use. Please refer to the following files depending on what you're looking for : - INSTALL for instructions on how to build and install HAProxy - BRANCHES to understand the project's life cycle and what version to use - LICENSE for the project's license - CONTRIBUTING for the process to follow to submit contributions The more detailed documentation is located into the doc/ directory : - doc/intro.txt for a quick introduction on HAProxy - doc/configuration.txt for the configuration's reference manual - doc/lua.txt for the Lua's reference manual - doc/SPOE.txt for how to use the SPOE engine - doc/network-namespaces.txt for how to use network namespaces under Linux - doc/management.txt for the management guide - doc/regression-testing.txt for how to use the regression testing suite - doc/peers.txt for the peers protocol reference - doc/coding-style.txt for how to adopt HAProxy's coding style - doc/internals for developer-specific documentation (not all up to date)
Description
Languages
C
98%
Shell
0.9%
Makefile
0.5%
Lua
0.2%
Python
0.2%