Go 中 http.Client 连接池耗尽与 TIME_WAIT 堆积:一次真实服务雪崩的排查记录
线上一个用 Go 写的网关服务每隔几天就会出现响应极慢、大量 502 的情况,重启后恢复,但很快复发。用 netstat 一看,TIME_WAIT 状态的连接堆到两万多,ESTABLISHED 却不多,而 ss -s 显示 TIME_WAIT 回收速度跟不上新建速度。服务本身 QPS 并不高,日志里也没有明显报错,唯独下游依赖的某个 HTTP 接口偶尔抖动时,错误率就会上升。这类问题通常不是单个请求的 bug,而是 http.Client 的连接复用没有真正生效:要么每次请求都新建 Client,要么 Tr...