【问题标题】:golang how to use tool find where the ticker leak?golang如何使用工具查找ticker泄漏的地方?
【发布时间】:2019-02-15 15:18:29
【问题描述】:

我发现我的进程在没有业务请求时使用高 cpu

我用go-torch发现runtime.timeproc大部分cpu都浪费了

我认为这一定是因为time.NewTicker在某处泄漏(不停止),或者在 for 循环中创建代码

那么我如何使用任何工具找到它

事实上,我已经搜索过它,并且一直关注defer ticker.Stop()

【问题讨论】:

  • 您能否在stackoverflow.com/help/mcve 之后添加一个最小且完整的示例?否则你的问题真的很难回答
  • 我怀疑ticker(或时间pkg)导致CPU负载。但是,如果您不停止(回收它们所依赖的通道),代码可能会泄漏内存。请参阅示例here

标签: go profile ticker


【解决方案1】:

我找到了找出泄漏代码的方法

在堆配置文件中,您可以键入:

go tool pprof http://xxx/debug/pprof/heap

tree time.NewTicker

它会显示代码创建的位置吗,如下所示:

【讨论】:

    猜你喜欢
    • 2014-03-24
    • 2020-03-26
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    • 2015-09-19
    • 2012-02-27
    • 2011-07-05
    • 2017-12-30
    相关资源
    最近更新 更多