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