2

我的应用程序有一些内存泄漏,这使应用程序经常崩溃。所以我开始使用 pprof 分析我的应用程序,但我只能在我点击 url 的实例中获取配置文件。有什么方法可以每隔一段时间找到配置文件,以便我可以分析应用程序发生了什么?

4

1 回答 1

3

我希望在异常(如核心转储)时 pprof 转储会有一个很酷的标志,但找不到任何东西。在此之前,我想到了两个选项:

  • 外部:curl pprof 定期使用 cron 或其他驱动程序
  • 内部:定期从程序内部编写 pprof

外部的

$ curl http://localhost:8080/debug/pprof/heap > heap.0.pprof

内部的

ticker := time.NewTicker(1 * time.Hour)
go func() {
    for {
       select {
        case <- ticker.C:
if err := pprof.WriteHeapProfile(f); err != nil {
            log.Fatal("could not write memory profile: ", err)
        }

       }
    }
}()

外部 curl 是我经常采取的一种策略,以便定期获取堆配置文件以跟踪/比较内存增长

于 2019-06-30T15:43:25.393 回答