问题标签 [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.
go - 无效的 golang 配置文件输出格式
我最近开始尝试 golang 的 pprof 工具。我已经按照链接https://golang.org/pkg/net/http/pprof/将新的 http 服务器添加到我的服务中,以便能够访问配置文件。一切正常,但是当我尝试生成 pdf 或 png 输出格式时,文本都是如下图所示的框: 我需要安装任何 unicode 库吗?我的服务是使用 docker alpine 映像部署的
go - HTTP请求后如何使用pprof查看Web服务器的内存使用情况
net/http/pprof 的文档解释了如何创建一个 30 秒的 CPU 分析会话并分析结果。
这允许我发起一个或多个 HTTP 请求并查看我的 Web 应用程序的 CPU 利用率。
我看到了一条生成堆配置文件的路线,但由于配置文件不会发生在 30 秒窗口之类的时间里,所以我在概念上不确定它是如何与我的 Web 应用程序交互的。
如何“协调”堆分析器以使其与一个或多个 HTTP 请求相对应?
go - golang 分析正在运行的生产应用程序而无需重新启动
我有一个正在运行的生产 golang 应用程序。它有内存泄漏。需要找出原因。
如果我重新启动_ "net/http/pprof"
问题可能不会再次发生。因为在 4 台服务器中只有这台服务器有这个问题
我想分析正在运行的服务器。从网上我读到 pprof 需要重新启动应用程序。
如何在不重新启动应用程序的情况下进行配置文件?
parsing - 无法解析“go tool pprof”的“原始”输出
我正在使用 Golang 的 pprof 来分析我的应用程序。我得到这个 .pb 文件,我可以使用它打开
从我输入的工具中
根据文档,“输出原始配置文件的文本表示”。这输出
我不明白的
我的理解是 pprof 是一个基于样本的分析器。这反映在上面的转储中,因为每一行似乎代表某个样本的一个实例。右边的数字必须是位置表的索引。
令人困惑的部分是第一个表的标题中的“样本/计数”,以及这么多样本似乎计数为零的事实。如果他们的计数为零,为什么他们一开始会在那里?那么“样本/计数”究竟是什么意思呢?
go - 如何分析哪个对象拥有最大内存
Go 程序包含大量内存,我想知道哪些对象拥有最大内存。
- 我已经尝试过 pprof,但它只能显示分配内存的位置。
- 有堆转储功能,但我找不到任何核心转储阅读器
https://golang.org/pkg/runtime/debug/#WriteHeapDump
比如像顶级消费者 MAT for java
go - “go test -cpuprofile”不会生成完整的跟踪
问题
我有一个带有测试套件的 go 包。
当我为此包运行测试套件时,总运行时间约为 7 秒:
但是,当我添加一个-cpuprofile=cpu.out
选项时,采样不会覆盖整个运行:
查看收集的样本:
我看到的问题是:由于某种原因,采样分析器停止收集样本,或者在某个时候被阻塞/减速。
语境
go版本是1.14.6,平台是linux/amd64
这个包包含与数据库交互的代码,测试是在一个实时的 postgresql 服务器上运行的。
我尝试过的一件事:t.Skip()
内部调用runtime.Goexit()
,所以我用t.Skip
简单的return
;替换了对和变体的调用。但这并没有改变结果。
问题
为什么不收集更多样本?我有一些已知的模式会阻止/减慢采样器,或者提前终止采样器?
go - 在生产中运行的微服务中检测内存泄漏的最佳方法是什么
我需要知道 golang 中的一些有效方法/工具,这将帮助我们检测在生产环境中运行并运行的微服务中的内存泄漏
go - 如何使用 pprof 运行特定函数的 CPU 配置文件?
本博客详细介绍了如何使用 pprof 运行 CPU 配置文件。在进行分析时,类似的函数main
可能会从样本中消失,因为 pprof 会将样本截断到底部的 100 个堆栈帧。这是记录在案的:
实际上 main.FindLoops 和 main.main 的总和应该是 100%,但是每个堆栈样本只包括底部的 100 个堆栈帧;在大约四分之一的样本中,递归 main.DFS 函数比 main.main 深 100 多帧,因此完整的跟踪被截断。
问题是我有一个我想要分析的特定功能。采样器报告它出现的概率大约为 5%,但我知道这并不准确。由于截断,它在堆栈上的帧一定已经丢失。
有没有办法可以分析特定函数并且永远不会从堆栈帧示例中截断它?我想知道它的真实 CPU 配置文件 100%。