登录
首页 >  Golang >  Go教程

Go goroutine 泄漏排查:用 pprof 找到没有退出的人

来源:Golang学习网专题原创

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

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

goroutine 泄漏通常不是突然发生,而是每次请求、每个任务或每次重试多留下一点。等到数量明显升高时,服务已经开始延迟抖动。pprof 是定位泄漏最直接的工具。

先看数量趋势

runtime.NumGoroutine 或 Prometheus 指标能告诉你是否持续增长。短暂高峰后能回落通常不是泄漏,持续阶梯式上涨才危险。

goroutine profile 看栈

pprof 的 goroutine 页面会显示大量 goroutine 卡在哪个函数。常见位置包括 channel send/receive、HTTP 读取、数据库查询和 time.After。

修复要回到生命周期

看到栈之后,不要只想着关闭 channel。真正的问题通常是没有 context、没有消费方、没有退出协议或没有超时。

代码示例

go func() {
    

上线检查

  • 服务暴露受保护的 pprof。
  • goroutine 数量进入监控。
  • 每个后台 goroutine 都有退出条件。
声明:本文转载于:Golang学习网专题原创 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>