go工具pprof部署
在做内存分析时,用到了pprof,这里做一下部署介绍和入门级别的使用。
pprof是golang的性能工具,有两种交互方式:命令行交互和web交互,同时还支持性能分析数据的图形化展示。
部署pprof:
在我们的kubeedge代码的edgecore.go里,import导入两个包,再加入访问pprof数据的http server并用goroutine启用。端口号无特殊要求,只要未被占用就行:
编译出包,netstat –anp | grep 6060查看到端口占用情况。
访问pprof数据:
1、打开浏览器访问http://ip:port/debug/pprof,可以看到如下的界面:
2、Pprof数据还可用命令行工具进行访问分析:
确保环境上安装了go,使用如下命令显示heap数据:
go tool pprof http://127.0.0.1:6060/debug/pprof/heap
然后可以输入top10,top20 –cum等命令来分析内存占用情况。
在命令行中可以加入–inuse_space,-alloc_space等参数,分别表示“当前使用的”和”已分配的”。
top下的参数(查看的是内存信息的话,单位就是内存占用量和百分比;查看的是CPU信息的话,单位就是时间):
(1) flat: 占用的内存量
(2) flat%: 内存占使用中内存总量的百分比
(3) sum%: 前面每一行flat%的和
(4) cum:累积量,如果当前函数调用了另一个函数,另一个函数占用的内存也会被计算
(5) cum%: 累积量占总量的百分比
分析goroutine泄漏:
在分析内存的时候,常见的内存泄漏可能是goroutine导致的,比如某个goroutine中有channel阻塞,导致goroutine回收不了,总之就是goroutine没有按照预期退出,而是程序结束时才退出。
定位goroutine泄漏,可以再web上点开goroutine,点开默认是debug=1:
Url请求中设置debug=2:
以上是一些我在定位过程中使用到的,pprof还有很多命令可供使用,还支持图形界面的访问,能自动绘制出内存的使用情况包括函数的调用关系,但是我在尝试的时候一直没有成功,感兴趣的可以试一下。
推荐两篇关于pprof定位内存泄漏问题的文章:
本文来自博客园,作者:易先讯,转载请注明原文链接:https://www.cnblogs.com/gongxianjin/p/17535129.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具