zoukankan      html  css  js  c++  java
  • Go的pprof使用

    web 服务器

    如果你的go程序是用http包启动的web服务器,你想查看自己的web服务器的状态。这个时候就可以选择net/http/pprof。你只需要引入包_"net/http/pprof",然后就可以在浏览器中使用http://localhost:port/debug/pprof/直接看到当前web服务的状态,包括CPU占用情况和内存使用情况等。具体使用情况你可以看godoc的说明。

    代码中加入

    _ "net/http/pprof"

    在浏览器中我就可以直接看prof信息了

    Image

    生成CPU状态分析图

    下面我们想要生成CPU状态分析图,

    调用go tool pprof http://localhost:3999/debug/pprof/profile

    或者 go tool pprof http://localhost:3999/debug/pprof/profile --text

    就会进入30秒的profile收集时间,在这段事件内猛刷新点击go-tour浏览器上的页面,尽量让cpu占用性能产生数据。

    (pprof) top

    Total: 3 samples

           1 33.3% 33.3% 1 33.3% MHeap_AllocLocked

           1 33.3% 66.7% 1 33.3% os/exec.(*Cmd).closeDescriptors

           1 33.3% 100.0% 1 33.3% runtime.sigprocmask

           0 0.0% 100.0% 1 33.3% MCentral_Grow

           0 0.0% 100.0% 2 66.7% main.Compile

           0 0.0% 100.0% 2 66.7% main.compile

           0 0.0% 100.0% 2 66.7% main.run

           0 0.0% 100.0% 1 33.3% makeslice1

           0 0.0% 100.0% 2 66.7% net/http.(*ServeMux).ServeHTTP

           0 0.0% 100.0% 2 66.7% net/http.(*conn).serve

    (pprof)web

    屏幕快照 2012-12-26 下午10.32.17

     

    服务进程

    如果你的go程序不是web服务器,而是一个服务进程,那么你也可以选择使用net/http/pprof包,同样引入包net/http/pprof,然后在开启另外一个goroutine来开启端口监听。

    比如:

    go func() {
            log.Println(http.ListenAndServe("localhost:8080", nil)) 

    }()

    应用程序

       

    import "runtime/pprof"
    func main() {
        f, _ := os.Create("./profile.prof")
        pprof.StartCPUProfile(f)
        defer pprof.StopCPUProfile()

    .......
    }


    #./geteandata 运行程序 收集信息

    #go tool pprof ./geteandata ./profile.prof 分析生成的文件

    进入到pprof中
    top 可使用top 查看最耗时的function
    web 会在/tmp下生成svg文件,svg文件是可以在浏览器下看的 注:如果报 sh: dot: command not found 则需要安装 graphviz
    #yum install graphviz
    #dot -V 查看 graphviz是否安装成功

    
    

    各字段的含义依次是:

    1. 采样点落在该函数中的次数

    2. 采样点落在该函数中的百分比

    3. 上一项的累积百分比

    4. 采样点落在该函数,以及被它调用的函数中的总次数

    5. 采样点落在该函数,以及被它调用的函数中的总次数百分比

    6. 函数名



    注:本文部分信息转自 http://www.cnblogs.com/yjf512/archive/2012/12/27/2835331.html
  • 相关阅读:
    积水路面Wet Road Materials 2.3
    门控时钟问题
    饮料机问题
    Codeforces Round #340 (Div. 2) E. XOR and Favorite Number (莫队)
    Educational Codeforces Round 82 (Rated for Div. 2)部分题解
    Educational Codeforces Round 86 (Rated for Div. 2)部分题解
    Grakn Forces 2020部分题解
    2020 年百度之星·程序设计大赛
    POJ Nearest Common Ancestors (RMQ+树上dfs序求LCA)
    算法竞赛进阶指南 聚会 (LCA)
  • 原文地址:https://www.cnblogs.com/wangxusummer/p/4037200.html
Copyright © 2011-2022 走看看