Gin 应用并注册 pprof

打印 上一主题 下一主题

主题 1557|帖子 1557|积分 4671

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
pprof` 配置与利用步调

1. 弁言

   通过下面操作,你可以顺遂集成和利用 pprof 来收集和分析 Gin 应用的性能数据。你可以查看 CPU
利用情况、内存占用、以及其他运行时性能数据,并通过图形化界面进行深度分析。
  1. 安装依靠

首先,确保安装了 github.com/gin-contrib/pprof 包,以便在 Gin 应用中启用 pprof 路由。
  1. go get github.com/gin-contrib/pprof
复制代码
2. 创建 Gin 应用并注册 pprof

在你的 Gin 应用中,注册 pprof 路由,确保程序可以提供性能分析数据。
  1. package main
  2. import (
  3.         "github.com/gin-contrib/pprof"
  4.         "github.com/gin-gonic/gin"
  5.         "log"
  6.         "net/http"
  7.         "time"
  8. )
  9. func main() {
  10.         // 创建 Gin 路由
  11.         r := gin.Default()
  12.         // 注册 pprof 路由
  13.         pprof.Register(r)
  14.         // 定义其他路由
  15.         r.GET("/hello", func(c *gin.Context) {
  16.                 c.JSON(http.StatusOK, gin.H{
  17.                         "message": "hello world",
  18.                 })
  19.         })
  20.         // 启动 Gin 服务
  21.         go func() {
  22.                 if err := r.Run(":8080"); err != nil {
  23.                         log.Fatal(err)
  24.                 }
  25.         }()
  26.         // 模拟应用运行,持续提供服务
  27.         time.Sleep(10 * time.Second)
  28. }
复制代码
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 文件:
  1. package main
  2. import (
  3.         "log"
  4.         "os"
  5.         "runtime/pprof"
  6.         "time"
  7. )
  8. func main() {
  9.         // 创建并打开 cpu.pprof 文件
  10.         f, err := os.Create("cpu.pprof")
  11.         if err != nil {
  12.                 log.Fatal(err)
  13.         }
  14.         defer f.Close()
  15.         // 开始 CPU 性能分析
  16.         pprof.StartCPUProfile(f)
  17.         defer pprof.StopCPUProfile()
  18.         // 模拟一些负载,以便有足够的计算样本
  19.         time.Sleep(5 * time.Second) // 让程序运行 5 秒,收集数据
  20. }
复制代码
这个代码段将会在程序实行时生成 cpu.pprof 文件。你可以调解 time.Sleep() 时间来让程序有充足的时间收集样本。
5. 利用 go tool pprof 分析 pprof 文件

下载并安装 Graphviz,它用于生成可视化图表:
Download Graphviz
接着,利用 go tool pprof 来分析 cpu.pprof 文件。运行以下下令:
  1. go tool pprof -http=:80 cpu.pprof
复制代码
这将启动一个 Web 服务器,你可以通过访问 http://localhost/ui/ 来查看 CPU 性能分析的图形界面。
6. 正确的操作顺序


  • 首先运行 Gin 应用程序,确保它已经启动并在监听端口上运行(比方,localhost:8080)。
  • 然后利用 go tool pprof 或通过欣赏器访问 http://localhost:8080/debug/pprof/ 来收集性能数据
  • 在 go tool pprof 中分析生成的 .pprof 文件,或者通过 Web 界面查看性能数据。
7. Web 界面访问和分析

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


  • CPU 性能图:http://localhost/ui/。
  • 生成的图表:你可以通过 Web UI 或者 go tool pprof 的 web 下令来生成 png、svg 等格式的图表。
通过这种方式,你可以查看函数调用关系、函数的 CPU 占用情况、内存利用等信息,从而更有针对性地进行性能优化。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

九天猎人

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表