这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
1. 简介
(1)性能调优原则
😋 要依靠数据而不是猜测
😋 要定位最大瓶颈而不是细枝末节
😋 不要过早优化
😋 不要过度优化
2. 性能分析工具 pprof
(1)简介
😋 目标:分析程序在什么地方耗费了多少CPU、Memory
😋 pprof 是用于可视化和分析性能分析数据的工具
(2)功能
(3)实战
①搭建项目
😋 项目地址:Wolfogre
😋 1 cpu核心 + 1 gb内存 + 下载项目
② 浏览器查看指标
③ CPU
😋 命令:go tool pprof "http://localhost:6060/debug/pprof/profile?seconds=10"
😋 命令:topN
😋 查看占用资源最多的函数
🤠 flat:当前函数本身的执行耗时
🤠 flat%:flat占CPU总时间的比例
🤠 sum%:上面每一行的 flag% 的总和
🤠 cum:指当前函数本身加上其调用函数的总耗时
🤠 cum:cum占CPU 总时间的比例
😋 命令:list
😋 根据指定的正则表达式查找代码行
😋 命令:web
😋 调用关系可视化
④ Heap 堆内存
😋 命令:go tool pprof -http=:8080http://localhost:6060/debug/pprof/heap
⑤ goroutine 协程
😋 协程泄露也会导致内存泄漏
😋 命令:go tool pprof -http=:8080"http://localhost:6060/debug/pprof/goroutine 🤠 支持搜索,在 Source 视图下搜索 wolf
😋 火焰图
🤠 由上到下表示调用顺序
🤠 每一块代表一个函数,越长代表占用 CPU 的时间越长
🤠 火焰图是动态的,支持点击块进行分析
⑥ mutecx 锁
😋 命令:go tool pprof -http=:8080 "http://localhost:6060/debug/pprof/mutex"
⑦ block 阻塞
😋 命令:go tool pprof -http=:8080 "http://localhost:6060/debug/pprof/block