问题标签 [pprof]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
83 浏览

go - 无效的 golang 配置文件输出格式

我最近开始尝试 golang 的 pprof 工具。我已经按照链接https://golang.org/pkg/net/http/pprof/将新的 http 服务器添加到我的服务中,以便能够访问配置文件。一切正常,但是当我尝试生成 pdf 或 png 输出格式时,文本都是如下图所示的框: 在此处输入图像描述 我需要安装任何 unicode 库吗?我的服务是使用 docker alpine 映像部署的

0 投票
1 回答
230 浏览

go - HTTP请求后如何使用pprof查看Web服务器的内存使用情况

net/http/pprof 的文档解释了如何创建一个 30 秒的 CPU 分析会话并分析结果。

这允许我发起一个或多个 HTTP 请求并查看我的 Web 应用程序的 CPU 利用率。

我看到了一条生成堆配置文件的路线,但由于配置文件不会发生在 30 秒窗口之类的时间里,所以我在概念上不确定它是如何与我的 Web 应用程序交互的。

如何“协调”堆分析器以使其与一个或多个 HTTP 请求相对应?

0 投票
0 回答
222 浏览

go - golang 分析正在运行的生产应用程序而无需重新启动

我有一个正在运行的生产 golang 应用程序。它有内存泄漏。需要找出原因。

如果我重新启动_ "net/http/pprof"问题可能不会再次发生。因为在 4 台服务器中只有这台服务器有这个问题

我想分析正在运行的服务器。从网上我读到 pprof 需要重新启动应用程序。

如何在不重新启动应用程序的情况下进行配置文件?

0 投票
0 回答
257 浏览

parsing - 无法解析“go tool pprof”的“原始”输出

我正在使用 Golang 的 pprof 来分析我的应用程序。我得到这个 .pb 文件,我可以使用它打开

从我输入的工具中

根据文档,“输出原始配置文件的文本表示”。这输出

我不明白的

我的理解是 pprof 是一个基于样本的分析器。这反映在上面的转储中,因为每一行似乎代表某个样本的一个实例。右边的数字必须是位置表的索引。

令人困惑的部分是第一个表的标题中的“样本/计数”,以及这么多样本似乎计数为零的事实。如果他们的计数为零,为什么他们一开始会在那里?那么“样本/计数”究竟是什么意思呢?

0 投票
1 回答
392 浏览

go - 内存没有被释放

这是一个解压缩字符串的简单程序,我只是运行一个循环来显示内存使用量增加并且使用的内存永远不会被释放。

即使在 8 小时后也没有释放内存

解压字符串包:https ://github.com/Albinzr/lzGo - (简单的lz字符串算法)

我正在添加一个要点链接,因为用于解压缩的字符串很大

源代码: 代码

在此处输入图像描述

活动监视器 在此处输入图像描述

我是新手,谁能告诉我如何解决内存问题?

更新20 年 7 月 15 日应用程序在达到内存限制时仍然崩溃,因为它只使用 12mb - 15mb,这不应该发生!

0 投票
0 回答
155 浏览

go - 如何分析哪个对象拥有最大内存

Go 程序包含大量内存,我想知道哪些对象拥有最大内存。

  1. 我已经尝试过 pprof,但它只能显示分配内存的位置。
  2. 有堆转储功能,但我找不到任何核心转储阅读器

https://golang.org/pkg/runtime/debug/#WriteHeapDump

比如像顶级消费者 MAT for java

在此处输入图像描述

0 投票
1 回答
228 浏览

go - “go test -cpuprofile”不会生成完整的跟踪

问题

我有一个带有测试套件的 go 包。

当我为此包运行测试套件时,总运行时间约为 7 秒:

但是,当我添加一个-cpuprofile=cpu.out选项时,采样不会覆盖整个运行:

查看收集的样本:

我看到的问题是:由于某种原因,采样分析器停止收集样本,或者在某个时候被阻塞/减速。

语境

go版本是1.14.6,平台是linux/amd64

这个包包含与数据库交互的代码,测试是在一个实时的 postgresql 服务器上运行的。

我尝试过的一件事:t.Skip()内部调用runtime.Goexit(),所以我用t.Skip简单的return;替换了对和变体的调用。但这并没有改变结果。

问题

为什么不收集更多样本?我有一些已知的模式会阻止/减慢采样器,或者提前终止采样器?

0 投票
1 回答
462 浏览

go - 在生产中运行的微服务中检测内存泄漏的最佳方法是什么

我需要知道 golang 中的一些有效方法/工具,这将帮助我们检测在生产环境中运行并运行的微服务中的内存泄漏

0 投票
0 回答
238 浏览

go - 如何使用 pprof 运行特定函数的 CPU 配置文件?

博客详细介绍了如何使用 pprof 运行 CPU 配置文件。在进行分析时,类似的函数main可能会从样本中消失,因为 pprof 会将样本截断到底部的 100 个堆栈帧。这是记录在案的:

实际上 main.FindLoops 和 main.main 的总和应该是 100%,但是每个堆栈样本只包括底部的 100 个堆栈帧;在大约四分之一的样本中,递归 main.DFS 函数比 main.main 深 100 多帧,因此完整的跟踪被截断。

问题是我有一个我想要分析的特定功能。采样器报告它出现的概率大约为 5%,但我知道这并不准确。由于截断,它在堆栈上的帧一定已经丢失。

有没有办法可以分析特定函数并且永远不会从堆栈帧示例中截断它?我想知道它的真实 CPU 配置文件 100%。

0 投票
1 回答
129 浏览

go - Go 的 pprof 代表什么?

pprof是 Go 的一个分析工具。但是这个词pprof代表什么?

这可能是一个愚蠢的问题,但我无法从任何地方得到答案。

谷歌的 pprof 源代码

转到有关 pprof 的博客文章