Go 服务内存泄漏排查:从 goroutine 堆积到 pprof 实战
线上 Go 服务在运行几天后 RSS 持续上涨,重启后恢复,但过几个小时又回到高位,GC 日志里 heap 并不大,active goroutine 却从几千缓慢爬升到几万。这种场景往往不是业务代码显式分配的 slice 或 map 没释放,而是 goroutine 挂在了 channel 收发、锁等待或网络读上,导致栈内存和引用对象都无法回收。本文从一次真实的排查过程出发,讲清楚怎么用 pprof 的 goroutine 和 heap 视图定位问题,如何区分正常阻塞和泄漏,以及几个常见误用导致 gorou...