mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2026-09-02 14:17:19 +00:00
http: disable HTTP/2 to enable parallel connections
This fixes the mount read throughput issue where HTTP GET requests to the same volume server were being serialized even with high -concurrentReaders. The issue was that: 1. HTTP/2 multiplexes all requests over a single TCP connection 2. Even with HTTP/1.1, ForceAttemptHTTP2 defaults to true in Go Changes: - Set ForceAttemptHTTP2: false on http.Transport to disable HTTP/2 - Set MaxConnsPerHost: 0 (unlimited) to allow parallel connections per host - For HTTPS, set NextProtos to only 'http/1.1' to prevent HTTP/2 negotiation This allows multiple goroutines to use separate TCP connections to the same volume server, enabling true parallel chunk fetching and better network bandwidth utilization. Relates to: #7504
This commit is contained in:
@@ -119,6 +119,7 @@ func NewHttpClient(clientName ClientName, opts ...HttpClientOpt) (*HTTPClient, e
|
||||
Certificates: []tls.Certificate{},
|
||||
RootCAs: caCertPool,
|
||||
InsecureSkipVerify: false,
|
||||
NextProtos: []string{"http/1.1"}, // Disable HTTP/2 for parallel connections
|
||||
}
|
||||
|
||||
if clientCertPair != nil {
|
||||
@@ -130,6 +131,8 @@ func NewHttpClient(clientName ClientName, opts ...HttpClientOpt) (*HTTPClient, e
|
||||
httpClient.Transport = &http.Transport{
|
||||
MaxIdleConns: 1024,
|
||||
MaxIdleConnsPerHost: 1024,
|
||||
MaxConnsPerHost: 0, // 0 means no limit, allows parallel connections
|
||||
ForceAttemptHTTP2: false,
|
||||
TLSClientConfig: tlsConfig,
|
||||
}
|
||||
httpClient.Client = &http.Client{
|
||||
|
||||
Reference in New Issue
Block a user