姊妹篇:
MaxIdleConnsPerHost
1 | // DefaultMaxIdleConnsPerHost is the default value of Transport's |
如果有设置keep-alive,即长连接。当请求结束后,会保留这么多个以备后用
transport实现了RoundTripper接口,该接口只有一个方法RoundTrip(),故transport的入口函数就是RoundTrip()。transport的主要功能其实就是缓存了长连接,用于大量http请求场景下的连接复用,减少发送请求时TCP(TLS)连接建立的时间损耗,同时transport还能对连接做一些限制,如连接超时时间,每个host的最大连接数等。transport对长连接的缓存和控制仅限于TCP+(TLS)+HTTP1,不对HTTP2做缓存和限制。
https://www.cnblogs.com/charlieroro/p/11409153.html
https://blog.csdn.net/asd1126163471/article/details/112914501
https://blog.csdn.net/kdpujie/article/details/73177179
https://yexingzhe54.github.io/passages/golang-http-client-time-wait/
https://studygolang.com/articles/28263
https://javamana.com/2021/05/20210507204225735M.html
https://duyanghao.github.io/http-transport/
golang http1 http2
https://www.jianshu.com/p/23e68a9c4602
https://segmentfault.com/a/1190000037438011
https://www.infoq.cn/article/vibfhhmpf7hmnnw4fhrx
https://juejin.cn/post/6844903626280812551
https://tomjamescn.github.io/post/2020-05-22-golang-http-transport-disable-http2/
Go如何初始化Http Client?MaxIdleConnsPerHost参数有何作用?keep-alive如何设置?有何作用
在Go中初始化HTTP客户端主要是通过http.Client结构体来完成的。http.Client具有多个字段,允许你定制客户端的行为,比如设置超时时间、代理、头信息等。其中,MaxIdleConnsPerHost是http.Transport结构体中的一个字段,用于控制每个主机保持空闲状态的最大连接数。keep-alive是一种HTTP连接重用的机制,用于减少建立和关闭连接的开销。
初始化HTTP客户端
以下是一个初始化自定义HTTP客户端的基本示例:
1 | package main |
MaxIdleConnsPerHost
MaxIdleConnsPerHost设置每个主机的最大空闲连接数。这对于控制与给定主机的并发连接数非常有用。较高的值可以提高性能,尤其是在高负载时,因为它减少了建立新连接的需要。但是,它也会占用更多资源,因为空闲连接保持打开状态。
Keep-Alive设置
keep-alive功能通常是通过http.Transport中的字段来控制的。默认情况下,Go的HTTP客户端已启用keep-alive。要调整keep-alive行为,可以设置http.Transport中的IdleConnTimeout字段,它定义了空闲连接在被关闭之前保持空闲状态的最长时间。
1 | client := &http.Client{ |
在上述代码中,IdleConnTimeout设置为90秒,这意味着在空闲90秒后,即使连接处于keep-alive状态,也会被关闭。
作用
- MaxIdleConnsPerHost:通过复用空闲连接,可以减少TCP握手的时间和开销,提高HTTP请求的性能。
- Keep-Alive:使得多个HTTP请求可以复用同一个TCP连接,减少了因为频繁建立和关闭连接而带来的延迟和资源消耗,对于提升Web应用或API客户端的性能特别有帮助。
原文链接: https://dashen.tech/2020/02/15/Go初始化Http-Client/
版权声明: 转载请注明出处.