Gab*_*eim 5 profiling heap-memory go
我正在尝试分析我正在运行的服务器。我主要关注https://artem.krylysov.com/blog/2017/03/13/profiling-and-optimizing-go-web-applications/
我添加以下代码以允许分析:
mux.HandleFunc("/debug/pprof/", pprof.Index)
mux.HandleFunc("/debug/pprof/cmdline", pprof.Cmdline)
mux.HandleFunc("/debug/pprof/profile", pprof.Profile)
mux.HandleFunc("/debug/pprof/symbol", pprof.Symbol)
mux.HandleFunc("/debug/pprof/trace", pprof.Trace)
Run Code Online (Sandbox Code Playgroud)
我启动了一些基准测试并运行go tool pprof http:/.1:8080/debug/pprof/profile?seconds=5,这按预期工作,因为它在 5 秒内分析了 cpu。
我想对堆做同样的事情。但是,如果我这样做,go tool pprof -alloc_objects http:/.1:8080/debug/pprof/profile?seconds=5我会获得所有分配,而不仅仅是最后五秒内的分配。
在我的特定情况下,我在启动时运行大量分配,并且它们掩盖了所有其他分配。是否可以将它们限制在这个时间段内?如果我执行跟踪,我可以看到堆正在增加,但我无法查询那里有哪些对象。
我尝试拍摄两个不同的堆快照,并使用带有 --base 的 go tool pprof 。然而它不起作用,它显示 0 差异。我的猜测是,与分配的总内存相比,对象太小,因此它们不会保存到配置文件中。
| 归档时间: |
|
| 查看次数: |
830 次 |
| 最近记录: |