登录
首页 >  Golang >  Go教程

Go Transport 连接复用:高并发下别把短连接当默认答案

来源:Golang学习网专题原创

时间:2026-06-09 00:06:00 359浏览 收藏

所属专题:Go 并发治理实战

HTTP 调用慢,不一定是下游业务慢,也可能是你的客户端不停建连。Transport 是 Go HTTP 客户端的连接池,高并发服务必须显式配置它,而不是依赖默认值。

空闲连接不是浪费

合理的空闲连接可以避免频繁 TCP/TLS 握手,降低延迟和 CPU 消耗。对于稳定调用的内部服务,应保留足够的 idle 连接。

MaxConnsPerHost 是保护阀

如果某个下游只能承受有限并发,可以用 MaxConnsPerHost 给客户端加硬上限。否则入口高峰会直接扩散到下游。

连接复用依赖正确关闭 body

如果没有读完或关闭响应体,连接无法回到池里。线上表现通常是连接数升高、延迟抖动、goroutine 堆积。

代码示例

transport := &http.Transport{
    MaxIdleConns:        200,
    MaxIdleConnsPerHost: 50,
    MaxConnsPerHost:     80,
    IdleConnTimeout:     90 * time.Second,
}
client := &http.Client{Transport: transport, Timeout: time.Second}

上线检查

  • 每个重要下游都有连接池配置。
  • 连接池指标和错误率一起看。
  • 所有响应体都正确关闭。
声明:本文转载于:Golang学习网专题原创 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>