Go语言 CPU 性能、内存分析调试方法大汇总:你要的都在这( 三 )


首先,我们先启动程序
$ ./demo4然后再打开一个终端
go tool pprof http://localhost:10000/debug/pprof/profile?seconds=60这里制定了生成profile文件的时间间隔60s
等待60s之后, 终端就会有结果出来,我们继续使用top来查看.
$ go tool pprof http://localhost:10000/debug/pprof/profile?seconds=60Fetching profile over HTTP from http://localhost:10000/debug/pprof/profile?seconds=60Saved profile in /home/itheima/pprof/pprof.demo4.samples.cpu.005.pb.gzFile: demo4Type: cpuTime: Mar 3, 2020 at 11:59pm (CST)Duration: 1mins, Total samples = 12.13s (20.22%)Entering interactive mode (type "help" for commands, "o" for options)(pprof) topShowing nodes accounting for 9940ms, 81.95% of 12130ms totalDropped 110 nodes (cum <= 60.65ms)Showing top 10 nodes out of 56flatflat%sum%cumcum%2350ms 19.37% 19.37%4690ms 38.66%math/rand.(*lockedSource).Int631770ms 14.59% 33.97%1770ms 14.59%sync.(*Mutex).Unlock (inline)1290ms 10.63% 44.60%6040ms 49.79%math/rand.(*Rand).Int31n1110ms9.15% 53.75%1130ms9.32%syscall.Syscall810ms6.68% 60.43%1860ms 15.33%bytes.(*Buffer).Write620ms5.11% 65.54%6660ms 54.91%math/rand.(*Rand).Intn570ms4.70% 70.24%570ms4.70%runtime.procyield500ms4.12% 74.36%9170ms 75.60%main.genSomeBytes480ms3.96% 78.32%480ms3.96%runtime.memmove440ms3.63% 81.95%440ms3.63%math/rand.(*rngSource).Uint64(pprof)依然会得到cpu性能的结果, 我们发现这次的结果与上次30s的结果百分比类似.
可视化查看
D
我们还是通过
$ go tool pprof ./demo4 profile进入profile文件查看,然后我们输入web指令.
$ go tool pprof ./demo4 profileFile: demo4Type: cpuTime: Mar 3, 2020 at 11:18pm (CST)Duration: 30.13s, Total samples = 6.27s (20.81%)Entering interactive mode (type "help" for commands, "o" for options)(pprof) web这里如果报找不到graphviz工具,需要安装一下
Ubuntu安装
$sudo apt-get install graphvizMac安装
brew install graphvizwindows安装
下载
将graphviz安装目录下的bin文件夹添加到Path环境变量中 。 在终端输入dot -version查看是否安装成功 。 然后我们得到一个svg的可视化文件在/tmp路径下
Go语言 CPU 性能、内存分析调试方法大汇总:你要的都在这文章插图
这样我们就能比较清晰的看到函数之间的调用关系,方块越大的表示cpu的占用越大 。
以上便是场景的一些Golang性能及内存分析大小 , 如果你希望调试你的成品程序 , 可以参考以上方法来调整并提升您的框架或者产品 。
【Go语言 CPU 性能、内存分析调试方法大汇总:你要的都在这】本文作者:刘丹冰Aceld