GODT-1348: max 100 conn per host

This commit is contained in:
James Houlahan
2021-09-14 14:57:02 +02:00
committed by Jakub
parent 8f1ca00c9d
commit cd6b5cdcc3
3 changed files with 15 additions and 4 deletions

View File

@ -35,7 +35,9 @@ func CreateTransportWithDialer(dialer TLSDialer) *http.Transport {
Proxy: http.ProxyFromEnvironment, Proxy: http.ProxyFromEnvironment,
MaxIdleConns: 100, MaxIdleConns: 100,
MaxIdleConnsPerHost: 100,
IdleConnTimeout: 5 * time.Minute, IdleConnTimeout: 5 * time.Minute,
ExpectContinueTimeout: 500 * time.Millisecond, ExpectContinueTimeout: 500 * time.Millisecond,
// GODT-126: this was initially 10s but logs from users showed a significant number // GODT-126: this was initially 10s but logs from users showed a significant number

View File

@ -43,7 +43,7 @@ func New(cfg Config) Manager {
func newManager(cfg Config) *manager { func newManager(cfg Config) *manager {
m := &manager{ m := &manager{
cfg: cfg, cfg: cfg,
rc: resty.New(), rc: resty.New().EnableTrace(),
locker: &sync.Mutex{}, locker: &sync.Mutex{},
} }
@ -59,6 +59,7 @@ func newManager(cfg Config) *manager {
// wrapped in JSON. If error is returned, `handleRequestFailure` is called, // wrapped in JSON. If error is returned, `handleRequestFailure` is called,
// otherwise `handleRequestSuccess` is called. // otherwise `handleRequestSuccess` is called.
m.rc.SetError(&Error{}) m.rc.SetError(&Error{})
m.rc.OnAfterResponse(logConnReuse)
m.rc.OnAfterResponse(updateTime) m.rc.OnAfterResponse(updateTime)
m.rc.OnAfterResponse(m.catchAPIError) m.rc.OnAfterResponse(m.catchAPIError)
m.rc.OnAfterResponse(m.handleRequestSuccess) m.rc.OnAfterResponse(m.handleRequestSuccess)

View File

@ -82,6 +82,14 @@ func updateTime(_ *resty.Client, res *resty.Response) error {
return nil return nil
} }
func logConnReuse(_ *resty.Client, res *resty.Response) error {
if !res.Request.TraceInfo().IsConnReused {
logrus.WithField("host", res.Request.URL).Trace("Connection was NOT reused")
}
return nil
}
func catchRetryAfter(_ *resty.Client, res *resty.Response) (time.Duration, error) { func catchRetryAfter(_ *resty.Client, res *resty.Response) (time.Duration, error) {
if res.StatusCode() == http.StatusTooManyRequests { if res.StatusCode() == http.StatusTooManyRequests {
if after := res.Header().Get("Retry-After"); after != "" { if after := res.Header().Get("Retry-After"); after != "" {