Gin 应用并注册 pprof

pprof` 配置与使用步骤

1. 引言

通过下面操作,你可以顺利集成和使用 pprof 来收集和分析 Gin 应用的性能数据。你可以查看 CPU

使用情况、内存占用、以及其他运行时性能数据,并通过图形化界面进行深度分析。

1. 安装依赖

首先,确保安装了 github.com/gin-contrib/pprof 包,以便在 Gin 应用中启用 pprof 路由。

bash 复制代码
go get github.com/gin-contrib/pprof
2. 创建 Gin 应用并注册 pprof

在你的 Gin 应用中,注册 pprof 路由,确保程序可以提供性能分析数据。

go 复制代码
package main

import (
	"github.com/gin-contrib/pprof"
	"github.com/gin-gonic/gin"
	"log"
	"net/http"
	"time"
)

func main() {
	// 创建 Gin 路由
	r := gin.Default()

	// 注册 pprof 路由
	pprof.Register(r)

	// 定义其他路由
	r.GET("/hello", func(c *gin.Context) {
		c.JSON(http.StatusOK, gin.H{
			"message": "hello world",
		})
	})

	// 启动 Gin 服务
	go func() {
		if err := r.Run(":8080"); err != nil {
			log.Fatal(err)
		}
	}()

	// 模拟应用运行,持续提供服务
	time.Sleep(10 * time.Second)
}
3. 收集 pprof 数据
  • 在程序运行时,访问以下 URL 来收集不同类型的性能数据:
    • CPU 性能数据http://localhost:8080/debug/pprof/profile?seconds=30 (收集 30 秒的 CPU 使用情况)
    • 堆内存数据http://localhost:8080/debug/pprof/heap
    • 线程数据http://localhost:8080/debug/pprof/goroutine
    • 控制反转数据http://localhost:8080/debug/pprof/block
    • 堆栈数据http://localhost:8080/debug/pprof/threadcreate
4. 生成 pprof 文件

为了方便分析,你可以通过以下代码生成 .pprof 文件:

go 复制代码
package main

import (
	"log"
	"os"
	"runtime/pprof"
	"time"
)

func main() {
	// 创建并打开 cpu.pprof 文件
	f, err := os.Create("cpu.pprof")
	if err != nil {
		log.Fatal(err)
	}
	defer f.Close()

	// 开始 CPU 性能分析
	pprof.StartCPUProfile(f)
	defer pprof.StopCPUProfile()

	// 模拟一些负载,以便有足够的计算样本
	time.Sleep(5 * time.Second) // 让程序运行 5 秒,收集数据
}

这个代码段将会在程序执行时生成 cpu.pprof 文件。你可以调整 time.Sleep() 时间来让程序有足够的时间收集样本。

5. 使用 go tool pprof 分析 pprof 文件

下载并安装 Graphviz,它用于生成可视化图表:

Download Graphviz

接着,使用 go tool pprof 来分析 cpu.pprof 文件。运行以下命令:

go 复制代码
go tool pprof -http=:80 cpu.pprof

这将启动一个 Web 服务器,你可以通过访问 http://localhost/ui/ 来查看 CPU 性能分析的图形界面。

6. 正确的操作顺序
  1. 首先运行 Gin 应用程序 ,确保它已经启动并在监听端口上运行(例如,localhost:8080)。
  2. 然后使用 go tool pprof 或通过浏览器访问 http://localhost:8080/debug/pprof/ 来收集性能数据
  3. go tool pprof 中分析生成的 .pprof 文件,或者通过 Web 界面查看性能数据。
7. Web 界面访问和分析

如果你使用了 go tool pprof -http=:80 命令启动 Web 界面,你可以通过浏览器访问以下地址来查看分析结果:

  • CPU 性能图http://localhost/ui/
  • 生成的图表 :你可以通过 Web UI 或者 go tool pprofweb 命令来生成 pngsvg 等格式的图表。

通过这种方式,你可以查看函数调用关系、函数的 CPU 占用情况、内存使用等信息,从而更有针对性地进行性能优化。

相关推荐
呆萌很11 天前
【Gin】文件上传下载(单文件 + 多文件)
gin
先跑起来再说13 天前
Go 排行榜系统的工程化实现:分布式锁、快照表与定时刷新
分布式·go·gin
必胜刻15 天前
一个异步生成游戏功能的落地复盘:Redis Stream + WebSocket + 状态补偿
redis·websocket·golang·gin·状态补偿
TE-茶叶蛋16 天前
B-tree vs GIN Trigram vs HNSW
gin
曾几何时`18 天前
Go(一)Gin框架 和 GORM机制
开发语言·golang·gin
老毛肚19 天前
Gin + GORM 接口可视化测试
gin
lolo大魔王19 天前
Gin 框架中间件超详细实战教程(原理、全局中间件、路由中间件、自定义中间件、跨域、日志拦截)
中间件·gin
lolo大魔王19 天前
Gin 框架响应格式与 HTML 模板渲染完整实战教程
前端·html·gin
必胜刻1 个月前
Go 调用Coze工作流实现 AI 游戏生成
开发语言·ai·golang·gin
比特森林探险记1 个月前
context 在 gRPC / Gin / K8s 中的实战
容器·kubernetes·gin