问题标签 [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 pprof 工作
我曾尝试分析一些 golang 应用程序,但无法正常工作,我遵循了以下两个教程:
- http://blog.golang.org/profiling-go-programs
- http://saml.rilspace.org/profiling-and-creating-call-graphs-for-go-programs-with-go-tool-pprof
两者都说在向应用程序添加一些代码行后,您必须执行您的应用程序,我这样做了,我在屏幕上收到以下消息:
2015/06/16 12:04:00 配置文件:启用 cpu 分析,/var/folders/kg/4fxym1sn0bx02zl_2sdbmrhr9wjvqt/T/profile680799962/cpu.pprof
所以,我知道正在执行分析,将信息发送到文件。
但是,当我看到文件大小时,在我测试的任何程序中,它总是 64 字节。
当我尝试使用 pprof 打开 cpu.pprof 文件并执行“top10”命令时,我看到文件中没有任何内容:
(“./fact”是我的应用程序)
去工具 pprof ./fact /var/folders/kg/4fxym1sn0bx02zl_2sdbmrhr9wjvqt/T/profile680799962/cpu.pprof
前十名 -->
(pprof) top10 0 of 0 total (0%) flat flat% sum% cum cum%
所以,当我进行分析时,就像什么都没有发生。
我已经在 mac(本例)和 ubuntu 中使用三个不同的程序对其进行了测试。
你知道我做错了吗?
然后示例程序非常简单,这是代码(是我从互联网上获取的一个非常简单的阶乘程序):
谢谢,费尔
google-perftools - gperftools 如何在后台工作?
我正在寻找gperftools如何工作的简单解释。到目前为止,这是我学到的:
- 它运行一个停止世界的采样器。换句话说,它会定期停止正在分析的程序以收集信息。
- Golang 的 pprof 库在下面使用 gperftools。
除了一般概述之外,还有一些我想回答的具体问题:
- gperftools 是“基于事件的分析器”还是“检测分析器”。据我了解,这些分析器通过这些修改修改程序运行和收集样本的方式
- gperftools 配置文件在操作系统的哪个“级别”?它是否像SystemTap或perf那样分析内核?
- gperftools 在高流量生产服务器上运行是否安全?
我问这个问题是为了解释在 Go 服务器上使用 pprof 引入的开销。
go - exec.Command 不会从 Go 自己的 pprof 工具中注册错误
这是我的代码:
当我在控制台中运行完全相同的命令时,我看到:
但是,我的 go 程序没有记录这是一个错误。奇怪的是,变量 out 打印为空字符串,而 err 为 nil。到底是怎么回事?
为了澄清,我正在分析http://google.com以故意创建错误。我通常会分析一个真正的 Go 应用程序。
go - go tool pprof 使用应用程序 PID 而不是 http 端点
现在,我使用 go tool pprof 来分析 Go 应用程序,如下所示:
我想在一个在未知端口上运行 http 服务器的任意 Go 进程上使用 pprof 工具。我拥有的关于该进程的唯一信息是它的 PID。我需要做两件事之一:
- 从它的 PID 中获取 Go 进程的端口号。
- 直接分析运行过程。例如,
go tool pprof 10303
PID 为 10303 之类的东西。
这些中的任何一个都可以吗?
performance - 如何解释 pprof 输出?
我正在尝试分析一个用 go 编写的应用程序,它显然使用了大约 256 个虚拟内存(使用检查ps aux
)。我正在尝试使用pprof包并查看哪些函数分配/消耗了大部分内存,但结果对我来说毫无意义。pprof top
似乎只列出了运行时函数。有人可以帮我理解这些数据吗?
去工具 pprof http://localhost:6060/debug/pprof/heap
http://localhost:6060/debug/pprof/heap?debug=1
http://localhost:6060/debug/pprof/goroutine?debug=1
4584 是应用程序的 PID。猫 /proc/4584/状态
linux - Pprof 和 golang - 如何解释结果?
我正在尝试在我的程序中使用 pprof,但是,与我阅读的文章(下面的链接)的结果略有不同。在我的结果中,我得到了这样的表格:
这是什么列:flat flat% sum% cum cum%
?
我正在阅读的文章: https ://software.intel.com/en-us/blogs/2014/05/10/debugging-performance-issues-in-go-programs http://blog.golang.org/profiling-围棋程序
google-app-engine - Golang 分析应用引擎测试
我似乎有与接收大文件并将它们发送到 GCS 相关的内存泄漏。尝试使用 pprof 来分析我的 appengine 代码的内存使用情况。我的测试使用 appengine/aetest,我可以输出内存配置文件,但结果似乎没有显示任何有用的东西。
首先我做了一个基准。这是一个非常慢的操作,所以它只运行一次。
我的函数调用都没有出现,这个 0.5 MB 的数字显然不正确(我正在打开一个 12 MB 的文件并上传它)。如何获得真实的内存配置文件?
macos - golang 工具 pprof 无法正常工作 - 无论分析目标如何,输出都相同损坏
我以前使用过 pprof 工具没有问题,而且效果很好 - 现在无论我配置什么,我都会看到如下输出:
此示例中分析的应用程序可能会进行 40 多个函数调用,甚至更复杂的应用程序正在为 cpu 和 memprofiling 生成类似的调用图。
我试图分析的应用程序都是 Web 应用程序,我一次分析它们一分钟,并使用 wrk 生成 200,000,000+ 个请求 = 所有返回数据和 2xx 响应
pprof 几天前突然停止运行 osx yosemite - 试图解决我最近升级到 el capitan 的问题,但结果是一样的。
注意:这不仅仅是调用图 - 调用 list 或 top 命令会产生类似的无效结果,但应用程序本身可以正常工作:
我正在使用以下包:“github.com/davecheney/profile”和 go v1.5.1
为清楚起见,这是我为生成配置文件所做的工作::
我将上面的包导入 main.go 并将以下内容放在我的 main 函数的顶部:
然后我构建二进制文件并运行它:
然后我看到这样的输出:
现在我从另一个终端运行该应用程序:
60 秒后,我返回查看我的个人资料:
有什么想法可能在这里发生,或者我可以从哪里开始解决/解决这个问题?
欢迎任何帮助建议。
go - 如何分析多个 goroutine
我想分析一个用 Go 编写的服务器。我正在使用“net/http/pprof”,但默认行为完全没用,因为它似乎只对运行提供分析数据的服务器的 goroutine 进行分析。