默认的http.Transport打开和关闭连接的速度过快。由于所有连接都连接到相同的host:port组合,因此您需要增加MaxIdleConnsPerHost
以匹配的值num_coroutines
。否则,运输工具将频繁关闭额外的连接,只是立即将它们重新打开。
您可以在默认传输方式上进行全局设置:
http.DefaultTransport.(*http.Transport).MaxIdleConnsPerHost = numCoroutines
或者在创建自己的交通工具时
t := &http.Transport{
Proxy: http.ProxyFromEnvironment,
DialContext: (&net.Dialer{
Timeout: 30 * time.Second,
KeepAlive: 30 * time.Second,
}).DialContext,
MaxIdleConnsPerHost: numCoroutines,
MaxIdleConns: 100,
IdleConnTimeout: 90 * time.Second,
TLSHandshakeTimeout: 10 * time.Second,
ExpectContinueTimeout: 1 * time.Second,
}