gin - pprof
go get https://github.com/gin-contrib/pprof
main.go
package main
import (
"github.com/gin-contrib/pprof"
"github.com/gin-gonic/gin"
)
func main() {
s := gin.Default()
// 方式一:性能
pprof.Register(s)
// 方式二:性能 - 授权访问
a := s.Group("/admin", gin.BasicAuth(gin.Accounts{"root": "888000"}))
pprof.RouteRegister(a)
s.Run(":13000")
}
web访问
http://127.0.01:13000/admin/debug/pprof/
页面元素
类型 | 描述 | 备注 |
---|---|---|
allocs | 内存分配情况的采样信息 | 可以用浏览器打开, 但可读性不高 |
blocks | 阻塞操作情况的采样信息 | 可以用浏览器打开, 但可读性不高 |
cmdline | 显示程序启动命令及参数 | 可以用浏览器打开 |
goroutine | 当前所有协程的堆栈信息 | 可以用浏览器打开, 但可读性不高 |
heap | 堆上内存使用情况的采样信息 | 可以用浏览器打开, 但可读性不高 |
mutex | 锁争用情况的采样信息 | 可以用浏览器打开, 但可读性不高 |
profile | CPU 占用情况的采样信息, 持续 30s | 浏览器打开会下载文件 |
threadcreate | 系统线程创建情况的采样信息 | 可以用浏览器打开, 但可读性不高 |
trace | 程序运行跟踪信息 | 浏览器打开会下载文件 |
终端交互
- go tool pprof http://localhost:8080/debug/pprof/profile?seconds=60
输入 top10
项 | 说明 |
---|---|
flat | 给定函数上运行耗时 |
flat% | 同上的 CPU 运行耗时总比例 |
sum% | 给定函数累积使用 CPU 总比例 |
cum | 当前函数加上它之上的调用运行总耗时 |
cum% | 同上的 CPU 运行耗时总比例 |
- go tool pprof http://localhost:8080/debug/pprof/heap
type 类型
项 | 说明 |
---|---|
inuse_space | 分析应用程序的常驻内存占用情况 |
alloc_objects | 分析应用程序的内存临时分配情况 |
- go tool pprof http://localhost:8080/debug/pprof/block
- go tool pprof http://localhost:8080/debug/pprof/mutex
可视化界面
- 启动方式一
go tool pprof -http=:8080 cpu.prof
- 启动方式二
go tool pprof cpu.prof
(pprof) web
web 命令需要安装 graviz: http://www.graphviz.org/download/
- mac 安装命令:
brew install graphviz
- centos 安装命令:
yum install graphviz
- ubuntu 安装命令:
apt install graphviz
来源:oschina
链接:https://my.oschina.net/qiongtaoli/blog/4461969