diff --git a/storage/remote/client.go b/storage/remote/client.go index 421506382..79ccb5910 100644 --- a/storage/remote/client.go +++ b/storage/remote/client.go @@ -55,7 +55,7 @@ type ClientConfig struct { // NewClient creates a new Client. func NewClient(index int, conf *ClientConfig) (*Client, error) { - httpClient, err := httputil.NewClientFromConfig(conf.HTTPClientConfig, "remote_storage") + httpClient, err := httputil.NewClientFromConfigAndOptions(conf.HTTPClientConfig, "remote_storage", false) if err != nil { return nil, err } diff --git a/util/httputil/client.go b/util/httputil/client.go index e36e35361..bed76b243 100644 --- a/util/httputil/client.go +++ b/util/httputil/client.go @@ -34,6 +34,12 @@ func newClient(rt http.RoundTripper) *http.Client { // NewClientFromConfig returns a new HTTP client configured for the // given config.HTTPClientConfig. The name is used as go-conntrack metric label. func NewClientFromConfig(cfg config.HTTPClientConfig, name string) (*http.Client, error) { + return NewClientFromConfigAndOptions(cfg, name, true) +} + +// NewClientFromConfigAndOptions returns a new HTTP client configured for the +// given config.HTTPClientConfig. The name is used as go-conntrack metric label. +func NewClientFromConfigAndOptions(cfg config.HTTPClientConfig, name string, disableKeepAlives bool) (*http.Client, error) { tlsConfig, err := NewTLSConfig(cfg.TLSConfig) if err != nil { return nil, err @@ -43,7 +49,7 @@ func NewClientFromConfig(cfg config.HTTPClientConfig, name string) (*http.Client var rt http.RoundTripper = &http.Transport{ Proxy: http.ProxyURL(cfg.ProxyURL.URL), MaxIdleConns: 20000, - DisableKeepAlives: false, + DisableKeepAlives: disableKeepAlives, TLSClientConfig: tlsConfig, DisableCompression: true, // 5 minutes is typically above the maximum sane scrape interval. So we can