Go语言 连接池:HTTP传输中MaxIdleConnsPerHost和IdleConnTimeout交互

3z6pesqy  于 2022-12-07  发布在  Go
关注(0)|答案(1)|浏览(341)

我正在尝试用Golang编写一组Web API的重载代理。为了防止端口耗尽,我决定不使用DefaultClient,而是为http.Client创建一个自定义示例。http.Transport中有许多有趣的设置,我可以随意使用。
我遇到了MaxIdleConnsPerHostIdleConnTimeout字段,我有这个问题。
如果我增加MaxIdleConnsPerHost的值,这意味着会有更多的空闲连接,但是它们是可重用的空闲连接吗?或者换句话说,为了创建一个合适的连接池,我应该相应地增加MaxIdleConnsPerHost的值和IdleConnTimeout的超时时间吗?或者它的行为正好相反?

htrmnn0y

htrmnn0y1#

是的,IdleConns是可重用的,因为它们是*keep-alive*连接。但是要让golang尊重keep-alive连接的可重用性,你需要在你的应用程序中确保两件事。
1.读取,直到响应完成(即
ioutil.ReadAll(rep.Body)

1.调用Body.Close()
这里有一个link,用于详细说明。

相关问题