问题标签 [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.
profiling - gperftools 不显示调用图结果
我已经安装了 gperftools 并收集了数据,到目前为止这看起来很合理。我看到一个节点(?)被大量采样 - 但我对该节点的调用者感兴趣 - 我没有看到它们?我也试过 callgrind/kcachegrind,我觉得我错过了什么?这是使用 --text 时的输出片段
所以我有兴趣看到 US_strcpy 的调用者,但我似乎没有?我确实从 kcachegrind 获得了 0x40472984 的漂亮调用图(仍在尝试将其与符号匹配)
go - 我可以下载堆转储以稍后运行 pprof 吗?
我正在尝试找到一种方法来存储来自 pprof 的堆数据,以便我可以共享它、稍后查看它、附加到问题等等。到目前为止,我的尝试都没有奏效。
如果我跑
go tool pprof http://my-server/debug/pprof/heap
然后运行web
,我得到一个完整的图表,就像我期望的那样。但是,如果我下载文件:
wget -O heapDump http://my-server/debug/pprof/heap
并尝试go tool pprof heapDump
,它似乎不能做它需要做的一切。我只得到一个非常有限的图表:
我尝试添加?debug=1
和使用不同的值,但它们似乎都不能正常工作。
go - 探查器未显示函数调用(带有 pprof 的 /pgk/profile)
编辑:当我将可执行文件添加到 pprof 调用时工作
我正在尝试使用来自https://github.com/pkg/profile的分析器来分析一个简单的程序:并使用工具 pprof。
这些示例显示了一个很好的表格,其中包含已调用的所有函数以及每个函数花费了多长时间,但我只看到几秒钟的 100% 使用率,没有更多信息
我该怎么做才能使其输出功能?它与代码完成时输出的“cpu profiling disabled”行有什么关系吗?
这是我用来生成输出的:
go - Go pprof:出现错误无法识别的配置文件格式
我正在使用 Go revel 框架开发一个 Web 程序(我的 Go 版本是 1.6.2)。我遇到了内存使用问题。revel占用的内存每天都在增加近百MB。所以我想调整程序。然后我学习使用 go pprof 并使用 revel pprof,如 github.com/revel/modules/tree/master/pprof 中所述。但是当我尝试使用以下命令获取内存配置文件时
去工具 pprof http://sit:9000/debug/pprof/heap。
它得到错误无法识别的配置文件格式。您可以看到以下快照。
在此处输入图像描述 我已经在这个问题上苦苦挣扎了好几个小时。任何帮助表示赞赏!先感谢您!
go - 在住宅内存稳步增加时将 inuse_memory 设为低
我正在用 Go 编写一个依赖于正则表达式的程序。htop 中显示的内存使用量正在稳步增加,直至程序崩溃。(> 5-7GB)
然而,当我用 pprof 分析内存使用情况时,它告诉我实际上只有一小部分在使用。(~70MB)
我尝试手动触发 GC:
这显示没有效果。我的理解是golang只在需要更多内存时才请求内存,并且每隔一段时间清理一次(使用GCTRACE运行表明gc实际上经常运行)我不明白为什么golang在实际使用的内存相对较小时继续请求内存.
有人知道差距的根本原因以及如何防止我的程序吃掉内存吗?
由于图表是 SVG,我无法嵌入它们:
- pprof inuse_space https://files.niels-ole.com/memory9.svg(可接受的内存使用)
- pprof alloc_space https://files.niels-ole.com/memory9-alloc.svg(通常称为分配大量内存的正则表达式)
可能相关: 如何分析golang内存 没有解释为什么内存不断增加(并且没有被重用)。
go - “使用的内存”指标:Go tool pprof vs docker stats
我编写了一个在我的每个 docker 容器中运行的 golang 应用程序。它通过 tcp 和 udp 使用 protobufs 相互通信,我使用 Hashicorp 的成员列表库来发现我网络中的每个容器。在 docker stats 上,我看到内存使用量呈线性增加,因此我试图在我的应用程序中找到任何泄漏。
由于它是一个持续运行的应用程序,我使用 http pprof 来检查任何一个容器中的实时应用程序。我看到 runtime.MemStats.sys 是恒定的,即使 docker stats 线性增加。我的 --inuse_space 大约 1MB 并且 --alloc_space 当然会随着时间的推移不断增加。这是 alloc_space 的示例:
我已经能够使用 http://:8080/debug/pprof/goroutine?debug=1 验证没有发生 goroutine 泄漏
请评论为什么 docker stats 显示不同的图片(线性增加内存)
如果我在晚上运行它,这个内存会膨胀到大约 250MB。我没有运行比这更长的时间,但我觉得这应该达到一个平台而不是线性增加
go - runtime.adjustdefers 在 pprof 输出中是什么意思?
我们正在运行一个大部分时间都在做 GC 的 Go 程序。我们做了一个内存配置文件,我做了一个“go tool pprof -alloc_objects”。然后我在 pprof 控制台中做了一个“top5”,它显示了以下内容:
我的问题是,runtime.adjustdefers 是什么意思?
go - pprof(用于 golang)不显示我的包裹的详细信息
我一直在尝试evm-specification-miner
使用 pprof 分析我的 go 应用程序(),但输出并不是很有用:
这是累积输出:
如您所见,大部分时间都花在evm-specification-miner
(这是我的 go 应用程序的名称)上,但我一直无法获得更多详细信息,甚至无法理解这些方括号的含义(有一个问题与类似的问题,但它没有收到任何答案)。
以下是 build 和 pprof 命令:
我什至尝试过调试标志-gcflags "-N -l"
(如此处所述:https ://golang.org/doc/gdb#Introduction ),但无济于事。
分析是通过调用来完成的pprof.StartCPUProfile()
,pprof.StopCPUProfile()
正如这篇博客文章所解释的那样:https ://blog.golang.org/profiling-go-programs :
StartProfiling
在 开始时调用main()
,StopProfiling
当接收到信号(中断或终止)时(或程序正常终止)。此配置文件是在中断后获得的。
go - 用于 c 库代码的 golang pprof
我一直在尝试使用 pprof 分析我的 golang 应用程序,但输出结果中似乎遗漏了我的 c 代码(链接为静态库)的详细信息。
从框架图中你可以看到所有的c代码耗时都在“runtime._ExternalCode”中报告,根本没有细节。而且我非常确定我的静态库是使用调试启用编译的。
那么有什么方法可以让 pprof 获取第 3 方 c 代码的详细信息(如堆栈跟踪)?或者是否有任何其他 golang 分析工具可以做到这一点?
go - go pprof doesn't work in different platform
My application is running on CentOS,and when I run curl localhost:port/debug/pprof/profile > some.pprof
,and run go tool pprof some.pprof
, it works. But When I use scp
copying the some.pprof
file to my mac and run go tool pprof some.pprof
,it doesn't work any more,command top
display only 1 line in which flat and sum both are 100% and the last row is the name of my application rather than the name of methods invoked.
Isn't the pprof file cross platform or something I've misused?