diff --git a/retrieval/scrape.go b/retrieval/scrape.go index db4e02f27..16ca5ecf7 100644 --- a/retrieval/scrape.go +++ b/retrieval/scrape.go @@ -420,6 +420,7 @@ func (s *targetScraper) scrape(ctx context.Context, w io.Writer) error { s.req = req } + resp, err := ctxhttp.Do(ctx, s.client, s.req) if err != nil { return err diff --git a/util/httputil/client.go b/util/httputil/client.go index 2c01fd0fd..a79bdd20f 100644 --- a/util/httputil/client.go +++ b/util/httputil/client.go @@ -47,6 +47,9 @@ func NewClientFromConfig(cfg config.HTTPClientConfig) (*http.Client, error) { DisableKeepAlives: false, TLSClientConfig: tlsConfig, DisableCompression: true, + // 5 minutes is typically above the maximum sane scrape interval. So we can + // use keepalive for all configurations. + IdleConnTimeout: 5 * time.Minute, } // If a bearer token is provided, create a round tripper that will set the