【发布时间】:2017-05-04 22:10:47
【问题描述】:
我正在尝试通过创建 Trasport 来控制 keep-alives 会话以重用 tcp 连接。
这是我的 sn-p,我不确定如何添加标头信息以进行身份验证。
url := "http://localhost:8181/api/v1/resource"
tr := &http.Transport{
DisableKeepAlives: false,
MaxIdleConns: 0,
MaxIdleConnsPerHost: 0,
IdleConnTimeout: time.Second * 10,
}
client := &http.Client{Transport: tr}
resp, err := client.Get(url)
【问题讨论】:
-
你没有。标头取自
*http.Request。 DisableKeepAlives 的默认值为 false,这意味着将尽可能重用连接。 -
所以,看起来我不需要创建 Transport,因为它的
DisableKeepAlives默认为 false。 -
另外,如果您要覆盖
DefaultTransport,您仍应确保复制所有重要设置,即您几乎总是需要一个带超时的 DialContext。 (并且您的前 3 个字段是零值,因此设置它们不会做任何事情) -
@JimB 尝试使用 go-routine 但 TCP 连接数正在堆积。
-
你用 goroutine 做什么?你应该有一个传输,可能是 DefaultTransport,不管任何 goroutines。