我正在尝试用Golang编写一组Web API的重载代理。为了防止端口耗尽,我决定不使用DefaultClient
,而是为http.Client
创建一个自定义示例。http.Transport
中有许多有趣的设置,我可以随意使用。
我遇到了MaxIdleConnsPerHost
和IdleConnTimeout
字段,我有这个问题。
如果我增加MaxIdleConnsPerHost
的值,这意味着会有更多的空闲连接,但是它们是可重用的空闲连接吗?或者换句话说,为了创建一个合适的连接池,我应该相应地增加MaxIdleConnsPerHost
的值和IdleConnTimeout
的超时时间吗?或者它的行为正好相反?
1条答案
按热度按时间htrmnn0y1#
是的,IdleConns是可重用的,因为它们是*keep-alive*连接。但是要让golang尊重keep-alive连接的可重用性,你需要在你的应用程序中确保两件事。
1.读取,直到响应完成(即ioutil.ReadAll(rep.Body))
1.调用Body.Close()
这里有一个link,用于详细说明。