Merge pull request #3052 from prometheus/connleak

Kill idle connections after 5 minutes
This commit is contained in:
Fabian Reinartz 2017-08-10 15:03:24 +02:00 committed by GitHub
commit 3519deae06
3 changed files with 14 additions and 2 deletions

View file

@ -420,6 +420,7 @@ func (s *targetScraper) scrape(ctx context.Context, w io.Writer) error {
s.req = req s.req = req
} }
resp, err := ctxhttp.Do(ctx, s.client, s.req) resp, err := ctxhttp.Do(ctx, s.client, s.req)
if err != nil { if err != nil {
return err return err

View file

@ -47,6 +47,9 @@ func NewClientFromConfig(cfg config.HTTPClientConfig) (*http.Client, error) {
DisableKeepAlives: false, DisableKeepAlives: false,
TLSClientConfig: tlsConfig, TLSClientConfig: tlsConfig,
DisableCompression: true, 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 // If a bearer token is provided, create a round tripper that will set the

View file

@ -346,8 +346,16 @@ func (h *Handler) Run(ctx context.Context) error {
ReadTimeout: h.options.ReadTimeout, ReadTimeout: h.options.ReadTimeout,
} }
go httpSrv.Serve(httpl) go func() {
go grpcSrv.Serve(grpcl) if err := httpSrv.Serve(httpl); err != nil {
log.With("err", err).Warnf("error serving HTTP")
}
}()
go func() {
if err := grpcSrv.Serve(grpcl); err != nil {
log.With("err", err).Warnf("error serving HTTP")
}
}()
return m.Serve() return m.Serve()
} }