go性能
pprof
Go 语言自带的 pprof 库就可以分析程序的运行情况,并且提供可视化的功能。可以通过报告生成、Web 可视化界面、交互式终端三种方式来使用 pprof。它包含两个相关的库:
- runtime/pprof对于只跑一次的程序,调用 pprof 包提供的函数,手动开启性能数据采集。
- net/http/pprof对于持续运行的在线服务,访问 pprof 提供的 HTTP 接口,获得性能数据。
1
2
3
4
5
6
7
8
9import (
"net/http"
_ "net/http/pprof"
)
go func() {
http.ListenAndServe("127.0.0.1:6060", nil)
}()
下载 cpu profile,默认从当前开始收集 30s 的 cpu 使用情况,
1 |
|
等待30s生成cpu的报告文件,pprof.tdrAgent.samples.cpu,并默认进入终端交互模式
1 |
|
对生成的报告启动web接口可视化,生成调用堆栈的火焰图,火焰图的每个函数均可点击,查看更深层的堆栈和cpu占用百分比
go性能
http://example.com/2024/03/29/go性能/