假如你发现服务 cpu / 内存占用率过高,或是请求响应慢,你想知道是哪段代码出了问题,pprof 就是用来帮你干这个的。
- 首先要提前引入 pprof 库,很简单,就在服务端代码的基础上多加几行代码
import (
"net/http"
_ "net/http/pprof"
)
func main() {
go func() {
http.ListenAndServe("localhost:8080", nil)
}()
// 主进程
}
- 点击下图里的 profile,会采集 30s 的数据保存到 profile 文件里
之后运行
go tool pprof -http :8081 ./profile
- 打开
http://localhost:8081/ui/
左上角可以选择传说的火焰图 (Flame Graph):