问题标签 [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 投票
2 回答
16406 浏览

go - 无法让 golang pprof 工作

我曾尝试分析一些 golang 应用程序,但无法正常工作,我遵循了以下两个教程:

两者都说在向应用程序添加一些代码行后,您必须执行您的应用程序,我这样做了,我在屏幕上收到以下消息:

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 中使用三个不同的程序对其进行了测试。

你知道我做错了吗?

然后示例程序非常简单,这是代码(是我从互联网上获取的一个非常简单的阶乘程序):

谢谢,费尔

0 投票
1 回答
1209 浏览

google-perftools - gperftools 如何在后台工作?

我正在寻找gperftools如何工作的简单解释。到目前为止,这是我学到的:

  • 它运行一个停止世界的采样器。换句话说,它会定期停止正在分析的程序以收集信息。
  • Golang 的 pprof 库在下面使用 gperftools。

除了一般概述之外,还有一些我想回答的具体问题:

  • gperftools 是“基于事件的分析器”还是“检测分析器”。据我了解,这些分析器通过这些修改修改程序运行和收集样本的方式
  • gperftools 配置文件在操作系统的哪个“级别”?它是否像SystemTapperf那样分析内核?
  • gperftools 在高流量生产服务器上运行是否安全?

我问这个问题是为了解释在 Go 服务器上使用 pprof 引入的开销。

0 投票
1 回答
150 浏览

go - exec.Command 不会从 Go 自己的 pprof 工具中注册错误

这是我的代码:

当我在控制台中运行完全相同的命令时,我看到:

但是,我的 go 程序没有记录这是一个错误。奇怪的是,变量 out 打印为空字符串,而 err 为 nil。到底是怎么回事?

为了澄清,我正在分析http://google.com以故意创建错误。我通常会分析一个真正的 Go 应用程序。

0 投票
1 回答
624 浏览

go - go tool pprof 使用应用程序 PID 而不是 http 端点

现在,我使用 go tool pprof 来分析 Go 应用程序,如下所示:

我想在一个在未知端口上运行 http 服务器的任意 Go 进程上使用 pprof 工具。我拥有的关于该进程的唯一信息是它的 PID。我需要做两件事之一:

  • 从它的 PID 中获取 Go 进程的端口号。
  • 直接分析运行过程。例如,go tool pprof 10303PID 为 10303 之类的东西。

这些中的任何一个都可以吗?

0 投票
1 回答
12148 浏览

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/状态

0 投票
2 回答
8303 浏览

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-围棋程序

0 投票
1 回答
481 浏览

go - 用于培训目的的 Golang 分析简单示例

我正在我的公司进行 Go 培训,我想以最好的方式展示 pprof 包。我认为我的例子不足以简单地展示 pprof 的力量。我只想使用 go std 库。代码应该给我更简单的调用图,但有一些瓶颈。

我当前的工作流程如下: 1. 在 webserver 中包含 pprof 2. 运行 webserver(它将收集数据 30 秒(默认)) 3. 向 webserver 运行一些 curl 镜头 4. 呈现 pprof 图表

我的代码如下所示:

没有过滤的 Pprof

全部

仅用于 handler() 函数的 Pprof

在此处输入图像描述

0 投票
1 回答
284 浏览

google-app-engine - Golang 分析应用引擎测试

我似乎有与接收大文件并将它们发送到 GCS 相关的内存泄漏。尝试使用 pprof 来分析我的 appengine 代码的内存使用情况。我的测试使用 appengine/aetest,我可以输出内存配置文件,但结果似乎没有显示任何有用的东西。

首先我做了一个基准。这是一个非常慢的操作,所以它只运行一次。

我的函数调用都没有出现,这个 0.5 MB 的数字显然不正确(我正在打开一个 12 MB 的文件并上传它)。如何获得真实的内存配置文件?

0 投票
1 回答
2283 浏览

macos - golang 工具 pprof 无法正常工作 - 无论分析目标如何,输出都相同损坏

我以前使用过 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 秒后,我返回查看我的个人资料:

有什么想法可能在这里发生,或者我可以从哪里开始解决/解决这个问题?

欢迎任何帮助建议。

0 投票
1 回答
309 浏览

go - 如何分析多个 goroutine

我想分析一个用 Go 编写的服务器。我正在使用“net/http/pprof”,但默认行为完全没用,因为它似乎只对运行提供分析数据的服务器的 goroutine 进行分析。