pprof
注册接口
第一步,在引用中加上
1 |
|
第二步,在代码开始运行的地方加上
1 |
|
接着,我们访问http://127.0.0.1:6060/debug/pprof/,即可看到
- allocs:查看过去所有内存分配的样本。
- block:查看导致阻塞同步的堆栈跟踪。
- cmdline: 当前程序的命令行的完整调用路径。
- goroutine:查看当前所有运行的 goroutines 堆栈跟踪。
- heap:查看活动对象的内存分配情况。
- mutex:查看导致互斥锁的竞争持有者的堆栈跟踪。
- profile: 默认进行 30s 的 CPU Profiling,得到一个分析用的 profile 文件。
- threadcreate:查看创建新 OS 线程的堆栈跟踪。
- trace:mp.weixin.qq.com/s/I9xSMxy32…
注意,默认情况下是不追踪block和mutex的信息的,如果想要看这两个信息,需要在代码中加上两行:
1 |
|
注意,上文的所有信息都是实时的,如果你刷新一下,是可以看到数字在变化的。此时如果点击蓝色的连接,可以看到一些协程的栈信息,这些信息并不容易阅读。如果想要更加清晰的数据,需要将信息保存下来,在本地进行分析。
采集&分析数据
有两种方式下载信息
方法一(推荐):
直接运行go tool pprof http://localhost:6060/debug/pprof/XXX
,其会自动下载数据到本地,然后供你分析。
实践:
1 |
|
方法二:
访问http://localhost:6060/debug/pprof/xxx
,浏览器就会提醒你下载文件。
这里有一个小点要注意,在这个页面下,点击profile
和trace
总是会下载文件。而点击其他链接会跳转到另一个页面,来展示一些数据,但是可读性也比较差。
如果点击profile
,程序会开始进行半分钟(默认值)的CPU采样,然后才会下载文件。
在跳转到页面中,会发现URL带有?debug=1
的后缀,如果把这个后缀去掉,则也会提示你下载文件。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GXBLOGS!
评论