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 占用情况、内存使用等信息,从而更有针对性地进行性能优化。

相关推荐
王家视频教程图书馆1 天前
go语言 gin grom jwt 登陆token验证 增删改查 分页 完整 图书管理系统
gin
liuyunshengsir3 天前
golang Gin 框架下的大数据量 CSV 流式下载
开发语言·golang·gin
better_liang3 天前
Java技术栈中的MySQL数据结构应用与优化
java·数据结构·mysql·性能调优·索引优化
我不是8神9 天前
gin与gorm框架知识点总结
ios·iphone·gin
西京刀客9 天前
golang路由与框架选型(对比原生net/http、httprouter、Gin)
http·golang·gin
张永清-老清11 天前
每周读书与学习->JMeter性能测试脚本编写实战(三)如何利用JMeter为MySQL数据库构造测试数据
数据库·测试工具·jmeter·压力测试·性能调优·jmeter性能测试·每周读书与学习
张永清12 天前
每周读书与学习->JMeter性能测试脚本编写实战(三)如何利用JMeter为MySQL数据库构造测试数据
性能调优·jmeter性能测试·性能分析·每周读书与学习
天天向上102415 天前
在 Go 的 Gin Web 框架中,获取 HTTP 请求参数有多种方式
前端·golang·gin
迷途的小子20 天前
go-gin binding 标签详解
java·golang·gin
L Jiawen21 天前
【Go · Gin】基础知识
开发语言·golang·gin