transport := &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, // 不校验服务端证书
MaxIdleConns: 100,
MaxIdleConnsPerHost: 10,
IdleConnTimeout: time.Duration(10) * time.Second, // 连接空闲超时
}
client := &http.Client{
Transport: transport,
Timeout: time.Duration(5) * time.Millisecond, // 请求超时
}
### https://blog.csdn.net/yimtcode/article/details/107778090
# https://xujiahua.github.io/posts/20200723-golang-http-reuse/
MaxIdleConns 所有host的连接池最大连接数量,默认无穷大
MaxIdleConnsPerHost 每个host的连接池最大空闲连接数,默认2(控制单个Host的连接池大小)
MaxConnsPerHost 对每个host的最大连接数量,0表示不限制
func CreateHTTPClient() *http.Client {
// 使用单例创建client
once.Do(func() {
client = &http.Client{
Transport: &http.Transport{
DialContext: (&net.Dialer{
Timeout: 30 * time.Second,
KeepAlive: 30 * time.Second,
}).DialContext,
MaxIdleConns: 0, // 最大连接数,默认0无穷大
MaxIdleConnsPerHost: 200, // 对每个host的最大连接数量(MaxIdleConnsPerHost<=MaxIdleConns)
IdleConnTimeout: 90 * time.Second, // 多长时间未使用自动关闭连接
},
}
})
return client
}
//不使用连接池
client:= &http.Client{
Transport: &http.Transport{
DialContext: (&net.Dialer{
Timeout: 5 * time.Second,
KeepAlive: 5 * time.Second,
}).DialContext,
TLSHandshakeTimeout: 5 * time.Second,
ResponseHeaderTimeout: 5 * time.Second,
ExpectContinueTimeout: 1 * time.Second,
MaxIdleConnsPerHost: -1,
},
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。