【工具 】pprof 使用总结

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 锁信息

  4. go tool pprof 127.0.0.1:9090/debug/pprof/goroutine 协程信息

终端参数意义:
flat:给定函数上运行耗时
flat%:同上的 CPU 运行耗时总比例
sum%:给定函数累积使用 CPU 总比例
cum:当前函数加上它之上的调用运行总耗时
cum%:同上的 CPU 运行耗时总比例
最后一行为函数名称

开发中遇到了不少的问题,大多数是可以通过pprof分析cpu, heap图来分析和解决的,配合perf top, strace ,可以统计syscall系统调用及stack的统计。对于有些tcp的状态,我们会使用tcpdump来抓包分析。

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  查看内存占比

参考博客:

https://studygolang.com/articles/12970
https://blog.csdn.net/u014229215/article/details/88837767

你可能感兴趣的:(工具录)