主要有两个包:

  • net/http/pprof
  • runtime/pprof

net/http/pprof只是对runtime/pprof包进行封装并用http暴露出来

分析web服务

常规使用方式,在入口文件main.go导入包

  1. - "net/http/pprof"

如果使用了gin框架,则需要导入包:

  1. import (
  2. "github.com/DeanThompson/ginpprof"
  3. )
  4. ginpprof.Wrap(router)
  5. router.Run(addr)

相关分析方法

  1. // 分析cpu使用情况
  2. go tool pprof [binary] http://localhost:8081/debug/pprof/profile
  3. // 分析内存使用情况
  4. go tool pprof [binary] http://localhost:8081/debug/pprof/heap

火焰图

  1. go tool pprof -http=":8081" [binary] [profile]

其中,profile是指前者生成的pprof profile 文件
例如:

  1. go tool pprof -http=":8081" user pprof.alloc_objects.alloc_space.inuse_objects.inuse_space.001.pb.gz