性能优化分析工具 | 青训营笔记

58 阅读1分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天

1. 简介

(1)性能调优原则

😋 要依靠数据而不是猜测

😋 要定位最大瓶颈而不是细枝末节

😋 不要过早优化

😋 不要过度优化

2. 性能分析工具 pprof

(1)简介

😋 目标:分析程序在什么地方耗费了多少CPU、Memory

😋 pprof 是用于可视化和分析性能分析数据的工具

(2)功能

image.png

(3)实战

①搭建项目

😋 项目地址:Wolfogre

😋 1 cpu核心 + 1 gb内存 + 下载项目

② 浏览器查看指标

image.png

image.png

image.png

③ CPU

😋 命令:go tool pprof "http://localhost:6060/debug/pprof/profile?seconds=10"

image.png

😋 命令:topN

😋 查看占用资源最多的函数

🤠 flat:当前函数本身的执行耗时
🤠 flat%:flat占CPU总时间的比例
🤠 sum%:上面每一行的 flag% 的总和
🤠 cum:指当前函数本身加上其调用函数的总耗时
🤠 cum:cum占CPU 总时间的比例

image.png

😋 命令:list

😋 根据指定的正则表达式查找代码行

image.png

😋 命令:web

😋 调用关系可视化

image.png

④ Heap 堆内存

😋 命令:go tool pprof -http=:8080http://localhost:6060/debug/pprof/heap

image.png

image.png

image.png

image.png image.png

⑤ goroutine 协程

😋 协程泄露也会导致内存泄漏

😋 命令:go tool pprof -http=:8080"http://localhost:6060/debug/pprof/goroutine 🤠 支持搜索,在 Source 视图下搜索 wolf

image.png

😋 火焰图

🤠 由上到下表示调用顺序
🤠 每一块代表一个函数,越长代表占用 CPU 的时间越长
🤠 火焰图是动态的,支持点击块进行分析

image.png

⑥ mutecx 锁

😋 命令:go tool pprof -http=:8080 "http://localhost:6060/debug/pprof/mutex"

image.png

⑦ block 阻塞

😋 命令:go tool pprof -http=:8080 "http://localhost:6060/debug/pprof/block

image.png