GO PPROF使用

一、前言

业务方反馈引入jaeger后,cpu load飙升,无奈只能分析一波。

二、PPROF环境

pprof 文件是二进制的,可以使用 svg 格式,方便分析。go tool pprof -h查看支持的输出类型。svg需要有graphviz环境,按照方式:

#Mac 
brew install graphviz
#centos
yum install graphviz

另外之前gotorch(https://github.com/uber-archive/go-torch
)非常好用,由于go1.11自带svg后,这个项目废弃了。

三、数据来源

1)runtime/pprof
2)net/http/pprof
net http封装了 runtime/pprof,通过http方式暴露数据。
3)github.com/pkg/profile,也是对runtime/pprof的封装。

pprof使用

如果直接使用runtime,则直接返回采样文件;如果使用http接口,可以访问url:
http://localhost:8080/debug/pprof/profile
http://localhost:8080/debug/pprof/heap

常用命令

#文本方式显示文件
go tool pprof --text http://localhost:8080/debug/pprof/heap
#交互模式
# Get a 30 second CPU profile
go tool pprof  'http://localhost:/debug/pprof/profile'
# Get a 60 second CPU profile
go tool pprof  'http://localhost:/debug/pprof/profile?seconds=60'
# Get a heap profile
go tool pprof  'http://localhost:/debug/pprof/heap'

https://www.cnblogs.com/Leo_wl/p/7426618.html
http://rodrigodumont.com/2017/11/10/profile-go-micro-services-in-kubernetes-with-pprof/

你可能感兴趣的:(GO PPROF使用)