Go pprof
pprof 是 Go 常用的性能剖析工具,用于定位 CPU、内存和 goroutine 等运行时热点,而不是靠猜测做优化。
#type / concept
#status / growing
#tech / dev
#resource / go
[!info] related notes
- 所属 MOC: Go 性能与诊断 MOC
- 前置概念: Go benchmark
- 并列概念: Go race detector
Go pprof
一句话定义
pprof 是 Go 生态中最常用的一套性能剖析工具,用来定位 CPU、内存、阻塞和 goroutine 等运行时热点。
核心机制 / 工作原理
pprof 的核心作用不是“自动提速”,而是回答:
- 时间主要花在哪里
- 内存主要被谁占用
- 哪些函数调用路径最重
- 哪些 goroutine 或阻塞点最值得先查
这让性能优化从“拍脑袋改代码”变成“基于热点证据做判断”。
最小例子 / 最小场景
一条常见工作流是:
- 先用 benchmark 或线上现象发现性能问题
- 再采集 pprof 数据
- 根据热点路径决定优化目标
为什么它重要
很多 Go 程序一旦进入服务端、高并发或大数据处理场景,性能问题往往不是语法级能看出来的。没有剖析工具,优化很容易变成无效劳动。
边界与易混淆点
- pprof 告诉你“热点在哪”,不自动告诉你“应该怎么改”
- 看见某个函数占比高,不一定代表它就是问题根因
- profiling 应该和基线、测试和业务目标一起看