go HTTP配置参数MaxIdleConnsPerHost 和DisableKeepAlives - 简书 - 图1

2019.07.18 09:29:19 字数 213 阅读 901

1.MaxIdleConnsPerHost
参数说明:

  1. MaxIdleConnsPerHost int
  2. const DefaultMaxIdleConnsPerHost = 2

连接的客户端可以持有的最大空闲连接,也就是连接池可以缓存一个客户端的最大连接数,默认是 2。如果想要禁用缓存,可以这么设置:

  1. http.DefaultTransport.(*http.Transport).MaxIdleConnsPerHost = -1

这样设置后请求完毕后就会立即断开连接而不会放到连接池。

还有看一个参数也可以设置禁用客户端连接缓存到连接池:

  1. http.DefaultTransport.(*http.Transport).DisableKeepAlives = true

这样设置后可以达到同样的效果,但是两者有啥区别呢?看源码区别如下:

  1. if pc.t.DisableKeepAlives && !req.wantsClose() {
  2. req.extraHeaders().Set("Connection", "close")
  3. }

也即是如果设置 DisableKeepAlives=true,则会请求的时候自动加上请求头 “Connection”, “close”,这样在服务端响应完后就会立即关闭连接,否则连接将由客户端关闭。

更多精彩内容下载简书 APP

“小礼物走一走,来简书关注我”

还没有人赞赏,支持一下

go HTTP配置参数MaxIdleConnsPerHost 和DisableKeepAlives - 简书 - 图2

总资产 9 (约 0.44 元) 共写了 38.2W 字获得 77 个赞共 38 个粉丝

推荐阅读更多精彩内容

  • 作者:松若章 来源:知乎 文章系列持续更新 点赞再看,感谢观看,更多请关注!更多面试文章和答案请观看 “面试合集”
    [go HTTP配置参数MaxIdleConnsPerHost 和DisableKeepAlives - 简书 - 图3

  • 前段时间,我们实验室用 go 作为后台开发语言开发了一个 web 项目,由于这是自己第一次使用 go 语言进行开发,在开发过程…
    go HTTP配置参数MaxIdleConnsPerHost 和DisableKeepAlives - 简书 - 图4

  • 将一个 Go 语言中结构体 slice 转为 JSON 的过程叫编组(marshaling),通过调用 json.Marshal…

    1. LNMP 架构优化 2. 组建 web 集群 3. 接入共享存储 NFS 问题 1: 新增节点 如果我们添加了一台应用…

go HTTP配置参数MaxIdleConnsPerHost 和DisableKeepAlives - 简书 - 图5