Beego pprof 性能分析工具使用

PHP二次开发 Golang 154 次浏览 , 没有评论

router.go 添加内容:

  1. beego.Router("/debug/pprof", &controllers.ProfController{})
  2. beego.Router("/debug/pprof/:app([\\w]+)", &controllers.ProfController{})

创建控制器:prof.go
添加内容:

  1. type ProfController struct {
  2. beego.Controller
  3. }
  4.  
  5. func (c *ProfController) Get() {
  6. switch c.Ctx.Input.Param(":app") {
  7. default:
  8. pprof.Index(c.Ctx.ResponseWriter, c.Ctx.Request)
  9. case "":
  10. pprof.Index(c.Ctx.ResponseWriter, c.Ctx.Request)
  11. case "cmdline":
  12. pprof.Cmdline(c.Ctx.ResponseWriter, c.Ctx.Request)
  13. case "profile":
  14. pprof.Profile(c.Ctx.ResponseWriter, c.Ctx.Request)
  15. case "symbol":
  16. pprof.Symbol(c.Ctx.ResponseWriter, c.Ctx.Request)
  17. }
  18. c.Ctx.ResponseWriter.WriteHeader(200)
  19. }

通过访问地址:http://127.0.0.1:8080/debug/pprof查看数据
注意:点击页面链接,如查看goroutine详情:http://127.0.0.1:8080/debug/goroutine?debug=1,会有问题,需将地址更改为:http://127.0.0.1:8080/debug/pprof/goroutine?debug=1。没搞明白啥原因。

如果想使用工具分析:
go tool pprof http://127.0.0.1:8080/debug/pprof/profile
需要安装:Graphviz 工具
下载地址:https://graphviz.gitlab.io/download/

pprof 部分字段解析:

2 allocs # 所有过去内存分析采样
0 block # 导致同步原语阻塞的堆栈跟踪
0 cmdline # 程序启动参数
4 goroutine # 所有当前goroutine堆栈跟踪
2 heap # 活动对象内存分配采样
0 mutex # 互斥锁跟踪
0 profile # 生成cpuprofile文件 生成文件使用go tool pprof工具分析
8 threadcreate # 创建系统线程的堆栈跟踪
0 trace # 对当前程序执行的跟踪 生成文件使用go tool trace工具分析
full goroutine stack dump # 显示所有goroutine的堆栈

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Go