22<html lang="en">
33 <head>
44 <meta charset="utf-8" />
5- <title>HAProxy version 3.1-dev9-21 - Configuration Manual</title>
5+ <title>HAProxy version 3.1-dev9-50 - Configuration Manual</title>
66 <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
77 <link href="https://raw.githubusercontent.com/thomaspark/bootswatch/v3.3.7/cerulean/bootstrap.min.css" rel="stylesheet" />
88 <link href="../css/page.css?0.4.2-15" rel="stylesheet" />
40694069
40704070 <a class="list-group-item" href="#tune.h2.be.max-concurrent-streams">tune.h2.be.max-concurrent-streams</a>
40714071
4072+ <a class="list-group-item" href="#tune.h2.be.rxbuf">tune.h2.be.rxbuf</a>
4073+
40724074 <a class="list-group-item" href="#tune.h2.fe.glitches-threshold">tune.h2.fe.glitches-threshold</a>
40734075
40744076 <a class="list-group-item" href="#tune.h2.fe.initial-window-size">tune.h2.fe.initial-window-size</a>
40774079
40784080 <a class="list-group-item" href="#tune.h2.fe.max-total-streams">tune.h2.fe.max-total-streams</a>
40794081
4082+ <a class="list-group-item" href="#tune.h2.fe.rxbuf">tune.h2.fe.rxbuf</a>
4083+
40804084 <a class="list-group-item" href="#tune.h2.header-table-size">tune.h2.header-table-size</a>
40814085
40824086 <a class="list-group-item" href="#tune.h2.initial-window-size">tune.h2.initial-window-size</a>
43924396 You can use <strong>left</strong> and <strong>right</strong> arrow keys to navigate between chapters.<br>
43934397 </p>
43944398 <p class="text-right">
4395- <small>Converted with <a href="https://github.com/cbonte/haproxy-dconv">haproxy-dconv</a> v<b>0.4.2-15</b> on <b>2024/10/11 </b></small>
4399+ <small>Converted with <a href="https://github.com/cbonte/haproxy-dconv">haproxy-dconv</a> v<b>0.4.2-15</b> on <b>2024/10/12 </b></small>
43964400 </p>
43974401 </div>
43984402 <!-- /.sidebar -->
44034407 <div class="text-center">
44044408 <h1><a href="http://www.haproxy.org/" title="HAProxy"><img src="../img/HAProxyCommunityEdition_60px.png?0.4.2-15" /></a></h1>
44054409 <h2>Configuration Manual</h2>
4406- <p><strong>version 3.1-dev9-21 </strong></p>
4410+ <p><strong>version 3.1-dev9-50 </strong></p>
44074411 <p>
44084412 2024/10/03<br>
44094413
@@ -8608,7 +8612,8 @@ <h2 id="chapter-3.2" data-target="3.2"><small><a class="small" href="#3.2">3.2.<
86088612not set, the common default value set by tune.h2.initial-window-size applies.
86098613It can make sense to slightly increase this value to allow faster downloads
86108614or to reduce CPU usage on the servers, at the expense of creating unfairness
8611- between clients. It doesn't affect resource usage.
8615+ between clients. It is better to use tune.h2.be.rxbuf instead, which does not
8616+ cause any unfairness. It doesn't affect resource usage.
86128617</pre><div class="page-header"><b>See also:</b> tune.h2.initial-window-size.</div>
86138618<a class="anchor" name="tune.h2.be.max-concurrent-streams"></a><a class="anchor" name="3-tune.h2.be.max-concurrent-streams"></a><a class="anchor" name="3.2-tune.h2.be.max-concurrent-streams"></a><a class="anchor" name="tune.h2.be.max-concurrent-streams (Global parameters)"></a><a class="anchor" name="tune.h2.be.max-concurrent-streams (Performance tuning)"></a><div class="keyword"><b><a class="anchor" name="tune.h2.be.max-concurrent-streams"></a><a href="#3.2-tune.h2.be.max-concurrent-streams">tune.h2.be.max-concurrent-streams</a></b> <span style="color: #080"><number></span></div><pre class="text">Sets the HTTP/2 maximum number of concurrent streams per outgoing connection
86148619(i.e. the number of outstanding requests on a single connection to a server).
@@ -8622,7 +8627,20 @@ <h2 id="chapter-3.2" data-target="3.2"><small><a class="small" href="#3.2">3.2.<
86228627clients sharing a connection (keep tune.h2.be.initial-window-size low in this
86238628case). It is highly recommended not to increase this value; some might find
86248629it optimal to run at low values (1..5 typically).
8625- </pre><a class="anchor" name="tune.h2.fe.glitches-threshold"></a><a class="anchor" name="3-tune.h2.fe.glitches-threshold"></a><a class="anchor" name="3.2-tune.h2.fe.glitches-threshold"></a><a class="anchor" name="tune.h2.fe.glitches-threshold (Global parameters)"></a><a class="anchor" name="tune.h2.fe.glitches-threshold (Performance tuning)"></a><div class="keyword"><b><a class="anchor" name="tune.h2.fe.glitches-threshold"></a><a href="#3.2-tune.h2.fe.glitches-threshold">tune.h2.fe.glitches-threshold</a></b> <span style="color: #080"><number></span></div><pre class="text">Sets the threshold for the number of glitches on a frontend connection, where
8630+ </pre><a class="anchor" name="tune.h2.be.rxbuf"></a><a class="anchor" name="3-tune.h2.be.rxbuf"></a><a class="anchor" name="3.2-tune.h2.be.rxbuf"></a><a class="anchor" name="tune.h2.be.rxbuf (Global parameters)"></a><a class="anchor" name="tune.h2.be.rxbuf (Performance tuning)"></a><div class="keyword"><b><a class="anchor" name="tune.h2.be.rxbuf"></a><a href="#3.2-tune.h2.be.rxbuf">tune.h2.be.rxbuf</a></b> <span style="color: #080"><size></span></div><pre class="text">Sets the HTTP/2 receive buffer size for outgoing connections, in bytes. This
8631+ size will be rounded up to the next multiple of tune.bufsize and will be
8632+ shared between all streams uploading data (both HEADERS and DATA frames). In
8633+ any case, one buffer will always be granted to each stream, and 7/8 of the
8634+ unused buffers will be shared between streams downloading payload, allowing
8635+ to significantly improve upload performance and avoid head-of-line blocking
8636+ (HoL) on backend connections shared between multiple clients when http-reuse
8637+ is set to "always". The advertised per-stream window is automatically
8638+ adjusted to reflect the available space so that in practice it should not be
8639+ required to touch tune.h2.be.initial-window-size. If less than the size
8640+ required to deal with all streams is set, this minimum will be used. The
8641+ default value is about 1600k (100 streams with 16kB buffers each).
8642+ </pre><div class="page-header"><b>See also:</b> tune.h2.be.initial-window-size, tune.h2.fe.rxbuf, http-reuse.</div>
8643+ <a class="anchor" name="tune.h2.fe.glitches-threshold"></a><a class="anchor" name="3-tune.h2.fe.glitches-threshold"></a><a class="anchor" name="3.2-tune.h2.fe.glitches-threshold"></a><a class="anchor" name="tune.h2.fe.glitches-threshold (Global parameters)"></a><a class="anchor" name="tune.h2.fe.glitches-threshold (Performance tuning)"></a><div class="keyword"><b><a class="anchor" name="tune.h2.fe.glitches-threshold"></a><a href="#3.2-tune.h2.fe.glitches-threshold">tune.h2.fe.glitches-threshold</a></b> <span style="color: #080"><number></span></div><pre class="text">Sets the threshold for the number of glitches on a frontend connection, where
86268644that connection will automatically be killed. This allows to automatically
86278645kill misbehaving connections without having to write explicit rules for them.
86288646The default value is zero, indicating that no threshold is set so that no
@@ -8636,11 +8654,12 @@ <h2 id="chapter-3.2" data-target="3.2"><small><a class="small" href="#3.2">3.2.<
86368654from HAProxy. This setting only affects payload contents (i.e. the body of
86378655POST requests), not headers. When not set, the common default value set by
86388656tune.h2.initial-window-size applies. It can make sense to increase this value
8639- to allow faster uploads. The default value of 65536 allows up to 5 Mbps of
8640- bandwidth per client over a 100 ms ping time, and 500 Mbps for 1 ms ping
8641- time. It doesn't affect resource usage. Using too large values may cause
8642- clients to experience a lack of responsiveness if pages are accessed in
8643- parallel to large uploads.
8657+ to allow faster uploads. The default value equals tune.bufsize (16384) and
8658+ allows at least 1.25 Mbps of bandwidth per stream over a 100 ms ping time,
8659+ and 125 Mbps for 1 ms ping time. It doesn't affect resource usage. Using too
8660+ large values may cause clients to experience a lack of responsiveness if
8661+ pages are accessed in parallel to large uploads. It is better to use
8662+ tune.h2.fe.rxbuf instead, which does not cause any unfairness.
86448663</pre><div class="page-header"><b>See also:</b> tune.h2.initial-window-size.</div>
86458664<a class="anchor" name="tune.h2.fe.max-concurrent-streams"></a><a class="anchor" name="3-tune.h2.fe.max-concurrent-streams"></a><a class="anchor" name="3.2-tune.h2.fe.max-concurrent-streams"></a><a class="anchor" name="tune.h2.fe.max-concurrent-streams (Global parameters)"></a><a class="anchor" name="tune.h2.fe.max-concurrent-streams (Performance tuning)"></a><div class="keyword"><b><a class="anchor" name="tune.h2.fe.max-concurrent-streams"></a><a href="#3.2-tune.h2.fe.max-concurrent-streams">tune.h2.fe.max-concurrent-streams</a></b> <span style="color: #080"><number></span></div><pre class="text">Sets the HTTP/2 maximum number of concurrent streams per incoming connection
86468665(i.e. the number of outstanding requests on a single connection from a
@@ -8683,20 +8702,37 @@ <h2 id="chapter-3.2" data-target="3.2"><small><a class="small" href="#3.2">3.2.<
86838702note that some load testing tools do not support reconnections and may report
86848703errors with this setting; as such it may be needed to disable it when running
86858704performance benchmarks. See also "<a href="#tune.h2.fe.max-concurrent-streams">tune.h2.fe.max-concurrent-streams</a>".
8686- </pre><a class="anchor" name="tune.h2.header-table-size"></a><a class="anchor" name="3-tune.h2.header-table-size"></a><a class="anchor" name="3.2-tune.h2.header-table-size"></a><a class="anchor" name="tune.h2.header-table-size (Global parameters)"></a><a class="anchor" name="tune.h2.header-table-size (Performance tuning)"></a><div class="keyword"><b><a class="anchor" name="tune.h2.header-table-size"></a><a href="#3.2-tune.h2.header-table-size">tune.h2.header-table-size</a></b> <span style="color: #080"><number></span></div><pre class="text">Sets the HTTP/2 dynamic header table size. It defaults to 4096 bytes and
8705+ </pre><a class="anchor" name="tune.h2.fe.rxbuf"></a><a class="anchor" name="3-tune.h2.fe.rxbuf"></a><a class="anchor" name="3.2-tune.h2.fe.rxbuf"></a><a class="anchor" name="tune.h2.fe.rxbuf (Global parameters)"></a><a class="anchor" name="tune.h2.fe.rxbuf (Performance tuning)"></a><div class="keyword"><b><a class="anchor" name="tune.h2.fe.rxbuf"></a><a href="#3.2-tune.h2.fe.rxbuf">tune.h2.fe.rxbuf</a></b> <span style="color: #080"><size></span></div><pre class="text">Sets the HTTP/2 receive buffer size for incoming connections, in bytes. This
8706+ size will be rounded up to the next multiple of tune.bufsize and will be
8707+ shared between all streams uploading data (both HEADERS and DATA frames). In
8708+ any case, one buffer will always be granted to each stream, and 7/8 of the
8709+ unused buffers will be shared between streams uploading payload, allowing to
8710+ significantly improve upload performance. The advertised per-stream window is
8711+ automatically adjusted to reflect the available space so that in practice it
8712+ should not be required to touch tune.h2.fe.initial-window-size. If less than
8713+ the size required to deal with all streams is set, this minimum will be used.
8714+ The default value of 1600k (100 streams with 16kB buffers each) permits
8715+ roughly 130 Mbps of upload speed for a client with a 100ms RTT.
8716+ </pre><div class="page-header"><b>See also:</b> tune.h2.fe.initial-window-size and tune.h2.be.rxbuf.</div>
8717+ <a class="anchor" name="tune.h2.header-table-size"></a><a class="anchor" name="3-tune.h2.header-table-size"></a><a class="anchor" name="3.2-tune.h2.header-table-size"></a><a class="anchor" name="tune.h2.header-table-size (Global parameters)"></a><a class="anchor" name="tune.h2.header-table-size (Performance tuning)"></a><div class="keyword"><b><a class="anchor" name="tune.h2.header-table-size"></a><a href="#3.2-tune.h2.header-table-size">tune.h2.header-table-size</a></b> <span style="color: #080"><number></span></div><pre class="text">Sets the HTTP/2 dynamic header table size. It defaults to 4096 bytes and
86878718cannot be larger than 65536 bytes. A larger value may help certain clients
86888719send more compact requests, depending on their capabilities. This amount of
86898720memory is consumed for each HTTP/2 connection. It is recommended not to
86908721change it.
86918722</pre><a class="anchor" name="tune.h2.initial-window-size"></a><a class="anchor" name="3-tune.h2.initial-window-size"></a><a class="anchor" name="3.2-tune.h2.initial-window-size"></a><a class="anchor" name="tune.h2.initial-window-size (Global parameters)"></a><a class="anchor" name="tune.h2.initial-window-size (Performance tuning)"></a><div class="keyword"><b><a class="anchor" name="tune.h2.initial-window-size"></a><a href="#3.2-tune.h2.initial-window-size">tune.h2.initial-window-size</a></b> <span style="color: #080"><number></span></div><pre class="text">Sets the default value for the HTTP/2 initial window size, on both incoming
86928723and outgoing connections. This value is used for incoming connections when
86938724tune.h2.fe.initial-window-size is not set, and by outgoing connections when
8694- tune.h2.be.initial-window-size is not set. The default value is 65536, which
8695- for uploads roughly allows up to 5 Mbps of bandwidth per client over a
8696- network showing a 100 ms ping time, or 500 Mbps over a 1-ms local network.
8697- Given that changing the default value will both increase upload speeds and
8698- cause more unfairness between clients on downloads, it is recommended to
8699- instead use the side-specific settings tune.h2.fe.initial-window-size and
8725+ tune.h2.be.initial-window-size is not set. This setting is used both as the
8726+ initial value and as a minimum per stream. The default value equals 16384
8727+ (tune.bufsize), which for uploads roughly allows at least 1.25 Mbps of
8728+ bandwidth per stream over a network showing a 100 ms ping time, or 125 Mbps
8729+ over a 1-ms local network. When less receive buffers than the maximum are in
8730+ use, within the limits defined by tune.h2.be.rxbuf and tune.h2.fe.rxbuf,
8731+ unused buffers will be shared between receiving streams. As such there is
8732+ normally no point in changing this default setting. Given that changing this
8733+ default value will both increase upload speeds and cause more unfairness
8734+ between clients on downloads, it is recommended to instead use the side-
8735+ specific settings tune.h2.fe.initial-window-size and
87008736tune.h2.be.initial-window-size.
87018737</pre><a class="anchor" name="tune.h2.max-concurrent-streams"></a><a class="anchor" name="3-tune.h2.max-concurrent-streams"></a><a class="anchor" name="3.2-tune.h2.max-concurrent-streams"></a><a class="anchor" name="tune.h2.max-concurrent-streams (Global parameters)"></a><a class="anchor" name="tune.h2.max-concurrent-streams (Performance tuning)"></a><div class="keyword"><b><a class="anchor" name="tune.h2.max-concurrent-streams"></a><a href="#3.2-tune.h2.max-concurrent-streams">tune.h2.max-concurrent-streams</a></b> <span style="color: #080"><number></span></div><pre class="text">Sets the default HTTP/2 maximum number of concurrent streams per connection
87028738(i.e. the number of outstanding requests on a single connection). This value
@@ -31119,7 +31155,7 @@ <h2 id="chapter-11.3" data-target="11.3"><small><a class="small" href="#11.3">11
3111931155 <br>
3112031156 <hr>
3112131157 <div class="text-right">
31122- HAProxy 3.1-dev9-21 – Configuration Manual<br>
31158+ HAProxy 3.1-dev9-50 – Configuration Manual<br>
3112331159 <small>, 2024/10/03</small>
3112431160 </div>
3112531161 </div>
0 commit comments