Merge pull request #1986 from tonistiigi/tcp-conn-limit

resolver: fix tcp connections limit
v0.9
Akihiro Suda 2021-02-19 17:24:41 +09:00 committed by GitHub
commit ddbed13a0b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 8 additions and 5 deletions

View File

@ -43,7 +43,7 @@ func fillInsecureOpts(host string, c config.RegistryConfig, h docker.RegistryHos
}
if c.Insecure != nil && *c.Insecure {
h2 := h
transport := newDefaultTransport()
transport := newTransport()
transport.TLSClientConfig = tc
h2.Client = &http.Client{
Transport: tracing.NewTransport(transport),
@ -53,7 +53,7 @@ func fillInsecureOpts(host string, c config.RegistryConfig, h docker.RegistryHos
}
if len(hosts) == 0 {
transport := newDefaultTransport()
transport := newTransport()
transport.TLSClientConfig = tc
h.Client = &http.Client{
@ -172,18 +172,20 @@ func NewRegistryConfig(m map[string]config.RegistryConfig) docker.RegistryHosts
func newDefaultClient() *http.Client {
return &http.Client{
Transport: tracing.NewTransport(newDefaultTransport()),
Transport: tracing.NewTransport(defaultTransport),
}
}
// newDefaultTransport is for pull or push client
var defaultTransport = newTransport()
// newTransport is for pull or push client
//
// NOTE: For push, there must disable http2 for https because the flow control
// will limit data transfer. The net/http package doesn't provide http2 tunable
// settings which limits push performance.
//
// REF: https://github.com/golang/go/issues/14077
func newDefaultTransport() *http.Transport {
func newTransport() *http.Transport {
return &http.Transport{
Proxy: http.ProxyFromEnvironment,
DialContext: (&net.Dialer{
@ -194,6 +196,7 @@ func newDefaultTransport() *http.Transport {
IdleConnTimeout: 30 * time.Second,
TLSHandshakeTimeout: 10 * time.Second,
ExpectContinueTimeout: 5 * time.Second,
MaxConnsPerHost: 6,
TLSNextProto: make(map[string]func(authority string, c *tls.Conn) http.RoundTripper),
}
}