UN-5213: Increase MaxStreams value for QUIC transport

The default max streams value of 100 is rather small when subject to
high load in terms of connecting QUIC with streams faster than it can
create new ones. This high value allows for more throughput.
This commit is contained in:
Sudarsan Reddy 2021-10-08 13:48:20 +01:00
parent 7059ef8e13
commit bccf4a63dc
3 changed files with 8 additions and 7 deletions

View File

@ -4,6 +4,7 @@ import (
"context" "context"
"fmt" "fmt"
"io" "io"
"math"
"net/http" "net/http"
"strconv" "strconv"
"strings" "strings"
@ -19,6 +20,7 @@ const (
lbProbeUserAgentPrefix = "Mozilla/5.0 (compatible; Cloudflare-Traffic-Manager/1.0; +https://www.cloudflare.com/traffic-manager/;" lbProbeUserAgentPrefix = "Mozilla/5.0 (compatible; Cloudflare-Traffic-Manager/1.0; +https://www.cloudflare.com/traffic-manager/;"
LogFieldConnIndex = "connIndex" LogFieldConnIndex = "connIndex"
MaxGracePeriod = time.Minute * 3 MaxGracePeriod = time.Minute * 3
MaxConcurrentStreams = math.MaxUint32
) )
var switchingProtocolText = fmt.Sprintf("%d %s", http.StatusSwitchingProtocols, http.StatusText(http.StatusSwitchingProtocols)) var switchingProtocolText = fmt.Sprintf("%d %s", http.StatusSwitchingProtocols, http.StatusText(http.StatusSwitchingProtocols))

View File

@ -4,7 +4,6 @@ import (
"context" "context"
"fmt" "fmt"
"io" "io"
"math"
"net" "net"
"net/http" "net/http"
"runtime/debug" "runtime/debug"
@ -60,7 +59,7 @@ func NewHTTP2Connection(
return &HTTP2Connection{ return &HTTP2Connection{
conn: conn, conn: conn,
server: &http2.Server{ server: &http2.Server{
MaxConcurrentStreams: math.MaxUint32, MaxConcurrentStreams: MaxConcurrentStreams,
}, },
config: config, config: config,
connOptions: connOptions, connOptions: connOptions,

View File

@ -358,7 +358,6 @@ func serveTunnel(
config, config,
connOptions, connOptions,
controlStream, controlStream,
connectedFuse,
reconnectCh, reconnectCh,
gracefulShutdownC) gracefulShutdownC)
@ -509,15 +508,16 @@ func ServeQUIC(
config *TunnelConfig, config *TunnelConfig,
connOptions *tunnelpogs.ConnectionOptions, connOptions *tunnelpogs.ConnectionOptions,
controlStreamHandler connection.ControlStreamHandler, controlStreamHandler connection.ControlStreamHandler,
connectedFuse connection.ConnectedFuse,
reconnectCh chan ReconnectSignal, reconnectCh chan ReconnectSignal,
gracefulShutdownC <-chan struct{}, gracefulShutdownC <-chan struct{},
) (err error, recoverable bool) { ) (err error, recoverable bool) {
tlsConfig := config.EdgeTLSConfigs[connection.QUIC] tlsConfig := config.EdgeTLSConfigs[connection.QUIC]
quicConfig := &quic.Config{ quicConfig := &quic.Config{
HandshakeIdleTimeout: quicHandshakeIdleTimeout, HandshakeIdleTimeout: quicHandshakeIdleTimeout,
MaxIdleTimeout: quicMaxIdleTimeout, MaxIdleTimeout: quicMaxIdleTimeout,
KeepAlive: true, MaxIncomingStreams: connection.MaxConcurrentStreams,
MaxIncomingUniStreams: connection.MaxConcurrentStreams,
KeepAlive: true,
} }
for { for {
select { select {