forked from Silverfish/proton-bridge
GODT-1348: max 100 conn per host
This commit is contained in:
@ -33,9 +33,11 @@ func CreateTransportWithDialer(dialer TLSDialer) *http.Transport {
|
|||||||
return &http.Transport{
|
return &http.Transport{
|
||||||
DialTLS: dialer.DialTLS,
|
DialTLS: dialer.DialTLS,
|
||||||
|
|
||||||
Proxy: http.ProxyFromEnvironment,
|
Proxy: http.ProxyFromEnvironment,
|
||||||
MaxIdleConns: 100,
|
MaxIdleConns: 100,
|
||||||
IdleConnTimeout: 5 * time.Minute,
|
MaxIdleConnsPerHost: 100,
|
||||||
|
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
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
@ -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 != "" {
|
||||||
|
|||||||
Reference in New Issue
Block a user