教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 使用pprof进行golang程序内存分析

使用pprof进行golang程序内存分析

发布时间:2022-03-04   编辑:jiaochengji.com
教程集为您提供使用pprof进行golang程序内存分析等资源,欢迎您收藏本站,我们将为您提供最新的使用pprof进行golang程序内存分析资源
<h2>前言</h2>

在使用 golang 编写复杂的项目时,往往会有用到多协程并发的场景,这时候容易因为疏忽,产生协程泄漏的问题,进而产生类似于内存泄漏的后果。 本文主要针对协程泄漏问题的排查,提供 golang 程序内存可视化分析的思路和做法。

<h2>pprof 简介</h2>

pprof 是用于可视化和分析配置文件数据的工具。
pprof 读取 profile.proto 格式的概要分析样本的集合,并生成报告以可视化并帮助分析数据。它可以生成文本和图形报告(通过使用 dot 可视化包)。

<h2>pprof 使用方法</h2><h3>埋点</h3>

首先,我们需要在 golang 程序内埋点,引入 pprof 的监测代码,并通过 http 接口暴露出来。

<pre>import _ "net/http/pprof"func main() { go func() { _ = http.ListenAndServe("0.0.0.0:8081", nil)     }()// your code}复制代码</pre>

然后我们启动需要分析的程序,就可以准备分析它了。

<h3>如何查看各个模块申请内存的大小</h3>

通过分析各个模块和函数占用的内存的大小,可以极为有效地排查内存泄漏。

<h4>命令行方式生成可视化分析图像</h4><pre>go tool pprof -alloc_space -cum http://localhost:8081/debug/pprof/heap复制代码</pre>

命令运行后,在控制台输入 web ,按下回车,会用.svg 默认的查看软件打开一个 svg 图片,展示了各个模块的内存占用图。
如果输入 web 运行后报错 Failed to execute dot. Is Graphviz installed? Error: exec: "dot": executable file not found in %PATH%,是因为电脑没有安装 Graphviz,这是图像生成依赖的组件。
解决方法是:打开 graphviz.gitlab.io/download/ 按照提示下载安装即可。安装完成后,对于 Windows,要在设置环境变量 path 后面加上 Graphviz 安装路径的 bin 文件夹。

<h4>web 方式浏览器查看具体数据列表</h4><pre>http://localhost:8081/debug/pprof/heap?debug=1复制代码</pre><h3>如何查看各个模块创建的协程数量</h3>

通过分析各个模块和函数创建的协程的数量,可以极为有效地排查协程泄漏,如果存在协程泄漏,对应的模块的协程数量是惊人的。

<h4>命令行方式生成可视化分析图像</h4><pre>go tool pprof http://localhost:8081/debug/pprof/goroutine复制代码</pre>

命令运行后,在控制台输入 web ,按下回车。

<h4>web 方式浏览器查看具体数据列表</h4><pre>http://localhost:8081/debug/pprof/goroutine?debug=1复制代码</pre><h2>总结</h2>

以上就是 pprof 的简单使用方法的介绍,相信对排查 golang 的内存泄漏和协程泄漏问题会有所帮助。如果需要更多更详细的用法,请参考 pprof 相关官方文档。


到此这篇关于“使用pprof进行golang程序内存分析”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
使用pprof进行golang程序内存分析
Golang pprof 性能分析与火焰图
Golang-性能监控及调优
golang http client 使用gzip_一次gRPC使用不当导致goroutine泄漏排查记录
golang 切片截取 内存泄露_怎么看待Goroutine 泄露
Go 语言机制之内存剖析(Language Mechanics On Memory Profiling)
【golang】pprof内存指标
golang runtime 简析
golang 内存泄漏
golang pprof 的原理分析

[关闭]
~ ~