Written by
aka.why
on
on
golang pprof简易玩法
golang的应用诊断可以依靠pprof工具, 这里总结一个快速上手的步骤.
step0: 假设
- 我们现在的应用跑在远端
- 我们本地的go为1.11版本(webui支持了火焰图)
- 诊断的应用是caddy
step1: 开启
对我们的应用开启profiling. 这个方法有很多, 可以直接参考runtime/pprof和net/http/pprof.
因为我们要调试的是caddy, 直接通过改配置文件并重新加载就可以开启了:
|
|
step2: 触发
在服务器上请求对应的url, 获取对应prof文件:
|
|
因为配置文件指定了仅允许本地访问, 因此我们需要将对应的文件传到本地.
step3: 分析
这块分析可以用命令行, 当然更方便的是使用浏览器.
|
|
有两点需要说一下:
- 直接在web界面选择
flame graph
可以观察火焰图 - 可以使用
-base x.prof
来做对比, 通常是看两个时间点的内存(图中会有-
符号)
针对trace内容可以使用需要使用trace工具:
|
|
这里文件越大, 解析起来就越慢. 有关trace的分析使用可以参考这篇文章和小米翻译的一篇
最后
golang的诊断工具挺不错的, 一旦熟悉了, 可以方便定位和排查问题.