在一段时间内分析堆分配

我正在尝试分析正在运行的服务器。我主要关注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)

我启动了一些基准测试,然后运行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可以得到所有分配,而不仅仅是最后五秒钟内的分配。

在我的特殊情况下,我在引导时运行了很多分配,它们掩盖了所有其他分配。是否可以将它们限制在此期间?如果执行跟踪,我可以看到堆正在增加,但是我无法查询那里有什么对象。

我尝试为堆拍摄两个不同的快照,并将go工具pprof与--base一起使用。但是,它不起作用,它显示0个差异。我的猜测是,与分配的总内存相比,对象太小,因此它们不会保存到配置文件中。

XHLIZIMING 回答:在一段时间内分析堆分配

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3101523.html

大家都在问