go性能

pprof

Go 语言自带的 pprof 库就可以分析程序的运行情况,并且提供可视化的功能。可以通过报告生成、Web 可视化界面、交互式终端三种方式来使用 pprof。它包含两个相关的库:

  • runtime/pprof对于只跑一次的程序,调用 pprof 包提供的函数,手动开启性能数据采集。
  • net/http/pprof对于持续运行的在线服务,访问 pprof 提供的 HTTP 接口,获得性能数据。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import (
    "net/http"
    _ "net/http/pprof"
    )

    go func() {
    http.ListenAndServe("127.0.0.1:6060", nil)
    }()

下载 cpu profile,默认从当前开始收集 30s 的 cpu 使用情况,

1
go tool pprof http://127.0.0.1:6060/debug/pprof/profile?seconds=30

等待30s生成cpu的报告文件,pprof.tdrAgent.samples.cpu,并默认进入终端交互模式

1
go tool pprof -http=127.0.0.1:32000 pprof.tdrAgent.samples.cpu.002.pb.gz

对生成的报告启动web接口可视化,生成调用堆栈的火焰图,火焰图的每个函数均可点击,查看更深层的堆栈和cpu占用百分比


go性能
http://example.com/2024/03/29/go性能/
作者
Liu XinWei
发布于
2024年3月29日
许可协议