支持什么使用模式
- Report generation:报告生成
- Interactive terminal use:交互式终端使用
- Web interface:Web 界面
可以做什么
- CPU Profiling:CPU 分析,按照一定的频率采集所监听的应用程序 CPU(含寄存器)的使用情况,可确定应用程序在主动消耗 CPU 周期时花费时间的位置
- Memory Profiling:内存分析,在应用程序进行堆分配时记录堆栈跟踪,用于监视当前和历史内存使用情况,以及检查内存泄漏
- Block Profiling:阻塞分析,记录 goroutine 阻塞等待同步(包括定时器通道)的位置
- Mutex Profiling:互斥锁分析,报告互斥锁的竞争情况
- Goroutine 查询
如何使用
通过web页面访问
对于本地程序,可以在代码中开放一个端口,提供http服务,用于展示pprof内容信息。http://127.0.0.1:6060/debug/pprof/
安装有go环境的机器
Cpu profiling:
go tool pprof http://localhost:6060/debug/pprof/profile?seconds=60
内存分析:
go tool pprof -inuse_space http://9.144.229.99:11021/debug/pprof/heap
- inuse_space:分析应用程序的常驻内存占用情况
- alloc_objects:分析应用程序的内存临时分配情况
还可以通过curl的方式 将分析结果保存,并导入到有golang环境的地方进行分析,比如得到两个内存使用情况的文件,
通过命令 go tool pprof -http=:8080 -base heap.current heap.current1 可以对比