pprof 使用总结
作用:
1. cpu分析,按照一定的频率监听cpu寄存器使用情况。确定Cpu周期花费时间的跟踪位置。
2. 内存分析,在应用程序进行堆分配时记录堆栈跟踪,用于监视当前和历史内存使用情况,以及检查内存泄漏。
3. 阻塞分析,记录 goroutine 阻塞等待同步(包括定时器通道)的位置
4. 互斥锁分析,报告互斥锁的竞争情况
web方式
url输入地址: http:127.0.0.1:9090/debuf/pprof
会出现以下信息
/debug/pprof/
profiles:
0 block
5 goroutine
3 heap
0 mutex
9 threadcreate
full goroutine stack dump
终端操作
登录指令:
1. go tool pprof 127.0.0.1:9090/debug/pprof/profile cpu信息
2. go tool pprof 127.0.0.1:9090/debug/pprof/heap 内存信息
默认类型: -inuse_space:分析应用程序的常驻内存占用情况
-alloc_objects:分析应用程序的内存临时分配情况
go tool pprof -alloc_objects 127.0.0.1:9090/debug/pprof/heap
3. go tool pprof 127.0.0.1:9090/debug/pprof/mutex 锁信息
3. go tool pprof 127.0.0.1:9090/debug/pprof/goroutine 协程信息
常用查看指令:
web 生产svg
top 查看排名前20信息
终端参数意义:
flat:给定函数上运行耗时
flat%:同上的 CPU 运行耗时总比例
sum%:给定函数累积使用 CPU 总比例
cum:当前函数加上它之上的调用运行总耗时
cum%:同上的 CPU 运行耗时总比例
最后一行为函数名称
go-torch 使用
安装
go get github.com/uber/go-torch
cd $GOPATH/src/github.com/uber/go-torch
git clone https://github.com/brendangregg/FlameGraph.git
然后将flamegraph.pl所在的目录拷贝到环境变量
运行指令:
go-torch -u http://127.0.0.1:9909 --seconds 60 -f cpu.svg 查看cup占比
go-torch -u http://127.0.0.1:9909/debug/pprof/heap --colors mem -f mem.svg 查看内存占比