如何连续配置我的go应用程序?

如何连续配置我的go应用程序?,go,pprof,Go,Pprof,我的应用程序有一些内存泄漏,这使得应用程序经常崩溃。因此,我开始使用pprof分析我的应用程序,但我只能在我点击url的实例上获得该配置文件。有没有什么方法可以每隔一段时间找到配置文件,以便我可以分析应用程序发生了什么情况?我希望在异常(如核心转储)时有一个很酷的pprof转储标志,但找不到任何东西。在此之前,我想到了两个选项: 外部:定期使用cron或其他驱动程序 内部:从程序内部定期编写pprof 外部 $ curl http://localhost:8080/debug/pprof/h

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

我希望在异常(如核心转储)时有一个很酷的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 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)
        }

       }
    }
}()
ticker:=time.NewTicker(1*time.Hour)
go func(){
为了{
挑选{
案例