美文网首页
Go语言性能调优工具——pprof

Go语言性能调优工具——pprof

作者: 陈先生_9e91 | 来源:发表于2018-10-31 11:50 被阅读0次

    Go语言性能调优工具——pprof

    Go语言对性能要求比较高,所以内置了调优工具pprof,本文简单介绍下工具的使用方法。

    http

    推荐直接使用http,侵入的代码量最少~。

    go1.10\src\net\http\pprof\pprof.go

    // To use pprof, link this package into your program:
    //  import _ "net/http/pprof"
    //
    // If your application is not already running an http server, you
    // need to start one. Add "net/http" and "log" to your imports and
    // the following code to your main function:
    //
    //  go func() {
    //      log.Println(http.ListenAndServe("localhost:6060", nil))
    //  }()
    //
    // Then use the pprof tool to look at the heap profile:
    //
    //  go tool pprof http://localhost:6060/debug/pprof/heap
    //
    // Or to look at a 30-second CPU profile:
    //
    //  go tool pprof http://localhost:6060/debug/pprof/profile
    //
    // Or to look at the goroutine blocking profile, after calling
    // runtime.SetBlockProfileRate in your program:
    //
    //  go tool pprof http://localhost:6060/debug/pprof/block
    //
    // Or to collect a 5-second execution trace:
    //
    //  wget http://localhost:6060/debug/pprof/trace?seconds=5
    //
    // Or to look at the holders of contended mutexes, after calling
    // runtime.SetMutexProfileFraction in your program:
    //
    //  go tool pprof http://localhost:6060/debug/pprof/mutex
    //
    // To view all available profiles, open http://localhost:6060/debug/pprof/
    // in your browser.
    
    

    注释里面已经详细地介绍了使用方法,简单总结下:

    1. 在main函数所在go文件,增加import _ "net/http/pprof"
    2. 这样会隐式执行里面的init方法,即注册pprof的路由
    3. 用一个goroutine执行log.Println(http.ListenAndServe("localhost:6060", nil)),开启web服务,仅限非web服务。

    pprof

    进程起来之后,我们就可以通过/debug/pprof/端点访问服务,但是内容不太好读,所以我们还需要借助pprof工具

    交互式

    通过go tool pprof http://localhost:6060/debug/pprof/profile,就可以交互式地读取性能数据。pprof提供了一些命令,比如top,list等等。

    web

    除了命令行以外,我们还可以通过pprof开启一个web服务,通过UI更直观地查看。

    go tool pprof -http="0.0.0.0:6061" http://localhost:6060/debug/pprof/profile

    ps. web最重要的功能是火焰图,如果你的UI页面没有火焰图,建议获取最新的pprof

    go get -u github.com/google/pprof
    

    相关文章

      网友评论

          本文标题:Go语言性能调优工具——pprof

          本文链接:https://www.haomeiwen.com/subject/nktatqtx.html