我对pprof还不太熟悉。我已经开始分析CPU了,并在一段时间后检查了top25。这是我得到的:
Showing top 25 nodes out of 174
flat flat% sum% cum cum%
1.01mins 21.92% 21.92% 1.10mins 23.83% time.Time.AppendFormat
0.26mins 5.56% 27.48% 0.26mins 5.56% type..eq.[65]runtime.sigTabT
0.23mins 5.07% 32.55% 0.23mins 5.07% type..hash.[3]runtime.symbol_key
0.15mins 3.14% 35.69% 0.15mins 3.14% type..hash.[9]string
...我认为这一切都很酷,我只需要去掉那个时间函数。然后我意识到,我甚至没有使用时间pkg中的任何东西,所以它一定是第三方库,或者是go内部函数之一。
所以我已经生成了带有-web标志的图形,所以我可以看到哪个函数调用了它,但它并没有直接显示出来。有没有办法追踪它是从哪里来的?
发布于 2019-10-19 09:39:03
我一直在使用下面的方法来查看所有内容。
go tool pprof -http :9999 -edgefraction 0 -nodefraction 0 -nodecount 100000 cpu.prof
这会给你一个很难理解的巨大的图表。为了帮助你做到这一点,你可以在web视图中点击有问题的节点,然后从左上角的“细化”菜单中选择“焦点”。这提供了该节点及其所有调用方和被调用方的视图。
要查看所有内容,可使用的关键选项包括:
--nodecount=<n> Show at most so many nodes [default=80]
--nodefraction=<f> Hide nodes below <f>*total [default=.005]
--edgefraction=<f> Hide edges below <f>*total [default=.001]您还可以在命令行上使用-focus来加快大型图形的渲染速度。
--focus=<regexp> Focus on nodes matching <regexp>https://stackoverflow.com/questions/49771048
复制相似问题