Go 的代码实践 | 青训营笔记

59 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天。 今天在课表上是休息时间,不过我正好可以用这段时间来看看前几天课程中积压的一些代码实践内容。因为本人的 GO 基础几乎为0,所以之前的几节课其实有一部分的代码实践都没有去自己动手实践,所以今天从 GitHub 上把老师的代码拉了下来,并自己动手实践了一下。

首先是看了看 Go 的性能优化工具 pprof 的使用。这里的使用主要是参考了张类老师的视频课程以及网上有关博客的内容。下面博客有 pprof 的具体实践内容。

golang pprof 实战 | Wolfogre's Blog

其实就是几个命令的使用,以及一些要知道的性能优化的参数。

一些性能优化的参数有:

类型描述
allocs内存分配情况的采样信息
blocks阻塞情况的采样信息
cmdline显示程序启动命令及参数
goroutine当前所有协程的堆栈信息
heap堆上内存使用情况的采样信息
mutex锁争用情况的采样信息
profileCPU 占用情况的采样信息
threadcreate系统线程创建情况的采样信息
trace运行跟踪信息

image.png

运行博客中提供“炸弹代码”,只要在 GoLand 下面的 Terminal 中输入指令 go tool pprof -http=:8080 "http://localhost:6060/debug/pprof" 即可打开 web 端的 pprof 页面。

然后是一些常用的命令指令:

  • 排查 CPU 占用过高:go tool pprof http://localhost:6060/debug/pprof/profile
  • 排查内存占用过高:go tool pprof http://localhost:6060/debug/pprof/heap
  • 排查频繁内存回收:go tool pprof http://localhost:6060/debug/pprof/allocs

其它的命令也是大同小异,只要修改一下后缀就行了。 对了,可以用 top 指令来按照资源消耗排行来查看每个类,然后用 list 类名 来查看方法。

好了,今天的内容就先写这么多吧,今天晚上还有一个小组的会议,主要是把要做的大作业模块化一下,然后小组内分工一下。