这是我参与「第三届青训营 -后端场」笔记创作活动的的第2篇笔记。
课程导学链接
【Go 语言原理与实践学习资料(上)】第三届字节跳动青训营-后端专场 - 掘金
课程项目地址
课程PPT链接
这是我第一次接触跟性能调优有关的知识。课程的内容还没有完全消化,特别是第三部分讲到案例的时候,好多专业名词也是第一次听说。先记录一下实战部分,待整理消化了老师讲的内容的时候再更新。
实战
又到了我最爱的实战环节
运行程序
访问
http://localhost:6060/debug/pprof/
确实很占CPU资源
终端输入
go tool pprof "http://localhost:6060/debug/pprof/profile?seconds=10"
输入top
- flat:当前函数本身的执行耗时
- falt%:flat占CPU总时间的比例
- sum%: 上面每一行的falt%总和
- cum: 当前函数本身加上其调用函数的总耗时
- cum%:cum占CPU总时间的比例
可以看到tigger占的比例最大
- falt = cum, 函数中没有调用其他函数,所以总执行耗时就是它本身的耗时
- flat = 0, 函数中只有其他函数的调用,它本身执行耗时=0
输入 list Eat
可以看到cpu消耗最大的命令行代码
将tiger.go里面的这个代码注释掉之后查看CPU占用情况
好像是CPU低了一点,这个数值一直变来变去的不好确定
到内存了
go tool pprof -http=:8080 "http://localhost:6060/debug/pprof/heap"
Oh,需要安装一个Graphviz
去官网下载安装
https://graphviz.org/download/
可以看到mouse占用内存最多
在view切换到source视图,可以看到那个占用内存的代码
把那个代码注释掉,再次运行程序
可以发现内存确实小了
任务管理器那里好像没怎么变
Goroutine协程
go tool pprof -http=:8080 "http://localhost:6060/debug/pprof/goroutine"
切换到source,在搜索栏搜索wolf
可以看到有一行代码占用了30个协程,我们把这一行代码注释掉看看
可以看到已经有改变了
mutex-锁
go tool pprof -http=:8080 "http://localhost:6060/debug/pprof/mutex"
操作和上面都是类似的
block-阻塞
go tool pprof -http=:8080 "http://localhost:6060/debug/pprof/block"