网站做着做着可能就有某个服务需要频繁的请求第三方接口,有时候 1秒一次,有时候 30 秒一次,有时候 1 分钟一次。
如果是 1 分钟内有两次,我们当然是希望说第一次发起连接请求后,后面的请求能否复用之前的连接。这种功能在 HTTP 中叫做 keeplive,也就是说第一个请求成功返回后并不会立即就关闭连接,而是等到一个超时,超时过后如果没有继续发起请求,那么就会关闭连接。
Go 语言我们一般使用 http.Get() 或 http.Post() 方法发起请求,那么就只要修改默认的配置即可
func init() {
http.DefaultClient.Timeout = time.Second * 30
}
如果是自定义 client 则需要手动配置了
http.Client{
Timeout: 5 * time.Second,
Transport: &http.Transport{
Proxy: http.ProxyFromEnvironment,
DialContext: (&net.Dialer{
Timeout: 1 * time.Second,
KeepAlive: 30 * time.Second,
DualStack: true,
}).DialContext,
MaxIdleConns: 100,
MaxIdleConnsPerHost: 8,
IdleConnTimeout: 120 * time.Second,
},
}
30 * time.Second 就是用来设置 HTTp keeplive 的
目前尚无回复