欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > 【工具】使用 Gin 集成 pprof 进行性能调优

【工具】使用 Gin 集成 pprof 进行性能调优

2025/4/21 3:59:45 来源:https://blog.csdn.net/qq_42638506/article/details/144494363  浏览:    关键词:【工具】使用 Gin 集成 pprof 进行性能调优

使用 Gin 集成 pprof 进行性能调优

一、pprof 简介

pprof 表示性能分析器(Performance Profiler),其概念和初始实现来源于Google内部的性能分析需求。pprof 在程序运行期间,定期对应用的状态数据进行采样,每次采样都会记录当前的Goroutine和函数调用栈。
Go 标准库自带了 pprof 包,集成在 net/http/pprof 中,只需几行代码即可启用。

package mainimport ("net/http"_ "net/http/pprof"
)func main() {go func() {// 在应用运行时启动 pprof 监听http.ListenAndServe("localhost:8080", nil)}()// 模拟业务逻辑select {}
}

启动程序后,访问http://localhost:6060/debug/pprof/

二、gin集成的pprof

gin作为一个轻量级、高性能的Web框架,也提供了 pprof 的集成。

  • 安装依赖
go get -u github.com/gin-contrib/pprof
  • 集成代码
package mainimport ("github.com/gin-contrib/pprof""github.com/gin-gonic/gin"
)func main() {r := gin.Default()// 启用 pprof 路由pprof.Register(r)// 模拟业务路由r.GET("/ping", func(c *gin.Context) {c.JSON(200, gin.H{"message": "pong",})})r.Run(":8080") // 启动服务
}

可以通过以下命令行获取程序运行30s的pprof记录

go tool pprof http://localhost:8080/debug/pprof/profile?seconds=30 

在运行完成后,输入web可以看到可视化的结果,颜色越深的部分运行时间越长。
在这里插入图片描述
在这里插入图片描述
讲pprof运行结果中的文件路径复制到下个命令行中,可以在 localhost:9888 打开可视化界面。

go tool pprof -http=localhost:9888  你的路径\pprof\pprof.___11go_build_main_go.exe.samples.cpu.005.pb.gz

View 选项可以选择性能分析的查看模式:
在这里插入图片描述

  • Top: 按采样数据的总消耗量列出最耗时或最占资源的函数。用于快速定位占用最多 CPU 或内存的热点函数。
  • Graph: 生成函数调用的有向图,显示函数间的调用关系及耗时比例。可以用于分析调用链,定位调用关系复杂的性能瓶颈。
  • Flame Graph: 以火焰图的形式可视化程序的调用栈和性能分布,每个矩形表示一个函数,函数越宽,表示其耗时越多,调用链从下到上,越高的层级表示更深的调用。可以直观了解调用栈的分布和最耗时的函数链路。
  • Flame Graph(old): 早期版本的火焰图,与标准 Flame Graph 类似,但界面和交互稍显简陋,适用于兼容性需求。
  • Peek: 查看某个具体函数的详细调用信息,包括调用该函数的父函数、该函数调用的子函数和耗时占比,可用于深入分析单个函数的性能。
  • Source: 显示函数的源代码,并在对应代码行旁标注耗时和调用次数。可以直接定位源代码中的性能热点,结合代码优化更直观。
  • Disassemble : 查看函数的汇编代码,并标注每条指令的性能数据(例如耗时)。在极端优化场景下,用于深入分析代码的底层执行效率。

参考文章

每个程序员都应该掌握的Golang性能优化秘技 (这篇文章优化部分讲的很详细)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词