1. 简介
pprof 是 golang 自带的性能分析工具,可以查看web应用的运行状态,分析程序CPU,内存,goroutine等使用情况。
golang 针对不同使用场景,提供了以下两种方式开启pprof性能分析
runtime/pprof:底层的pprof,可以直接通过代码调用
net/http/pprof:对runtime/pprof的封装,提供http接口和页面,更方便的调用,前提是应用有提供http服务
net/http/pprof是对runtime/pprof的封装,提供了
2. 直接使用runtime/pprof
直接使用 runtime/pprof 库,将画像数据写入文件中
package main
import (
"fmt"
"os"
"runtime/pprof"
)
func main() {
//CPU Profile
f, err := os.Create("./cpuprofile")
if err != nil {
fmt.Println(err)
return
}
defer f.Close()
pprof.StartCPUProfile(f)
defer pprof.StopCPUProfile()
//Memory Profile
fm, err := os.Create("./memoryprofile")
if err != nil {
fmt.Println(err)
return
}
defer fm.Close()
pprof.WriteHeapProfile(fm)
for i := 0; i < 100; i++ {
fmt.Println("程序员麻辣烫")
}
}
执行完后,会发现cpuprofile、memoryprofile文件,里面包含cpu、内存的画像。 runtime/pprof 直接支持这两种画像
2.1. 生成文件解析
- 使用
**pprof**
工具分析文件:
-
- 查看分析数据:运行
go tool pprof
命令来加载文件。例如:
- 查看分析数据:运行
go tool pprof cpu.pprof
这将启动一个交互式的 pprof
命令行界面,你可以在这里运行命令来查看不同的性能数据。