zdpgo_gin_pprof
为zdpgo_gin框架提供的pprof性能分析工具
安装
bash
go get github.com/zhangdapeng520/zdpgo_gin_pprof
使用教程
默认配置
go
package main
import (
gin "github.com/zhangdapeng520/zdpgo_gin"
pprof "github.com/zhangdapeng520/zdpgo_gin_pprof"
)
func main() {
router := gin.Default()
pprof.Register(router)
router.Run(":8080")
}
自定义配置
go
package main
import (
"net/http"
gin "github.com/zhangdapeng520/zdpgo_gin"
pprof "github.com/zhangdapeng520/zdpgo_gin_pprof"
)
func main() {
router := gin.Default()
adminGroup := router.Group("/admin", func(c *gin.Context) {
if c.Request.Header.Get("Authorization") != "foobar" {
c.AbortWithStatus(http.StatusForbidden)
return
}
c.Next()
})
pprof.RouteRegister(adminGroup, "pprof")
router.Run(":8080")
}
浏览器访问如下页面
查看文字版pprof信息
http://localhost:8080/debug/pprof/
图形化查看:
bash
go tool pprof -http="127.0.0.1:8089" http://127.0.0.1:8080/debug/pprof/goroutine
需要安装:https://graphviz.org/download/
参数说明
- allocs:内存分配,历史累计
- block:导致阻塞的堆栈记录,历史累计
- cmdline:当前程序命令行完整调用路径
- goroutine:当前程序所有goroutine堆栈信息,实时变化
- heap:活动对象内存分配情况,实时变化
- mutex:锁竞争记录,历史累计
- profile:cpu使用情况
- threadcreate:新线程创建情况
- trace:当前程序执行链路
- flat:当前函数的数据,不含调用其他函数
- flat%:当前函数分配占比
- sum%:自己和前面所有的flat%累积值
- cum:当前函数及当前函数调用其他函数分配总和
- cum%:当前函数及当前函数调用其他函数分配总和占比
使用 go tool
使用pprof工具查看堆配置文件:
bash
go tool pprof http://localhost:8080/debug/pprof/heap
或者看看30秒的CPU配置文件:
bash
go tool pprof http://localhost:8080/debug/pprof/profile
或者在调用runtime之后查看运行例程阻塞配置文件
bash
go tool pprof http://localhost:8080/debug/pprof/block
或者收集5秒的执行跟踪:
bash
wget http://localhost:8080/debug/pprof/trace?seconds=5
版本历史
v0.1.0
- 基础代码