问题标签 [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 博客上的教程。但是我有 1 个小问题,我无法调查自己的函数或调用生成的分析输出。我正在使用这个命令来构建我的二进制文件:
而当我使用 go tool pprof 检查结果时,我只能
正如你所看到的,大量的时间都花在了 [brains] 包中,但是我看不到任何细节,比如我在其他包中看到的功能!当然,我可能会做一些非常愚蠢的错误,所以如果有人注意到我的错误,如果你指出我会非常感激:D
ps:我正在linux环境上进行分析,并在我的Macbook上进行分析,但我认为这无关紧要,因为二进制文件在两种环境中都是静态构建的
谢谢,
尼尔斯
optimization - 如何优化在runtime.osyield和runtime.usleep中花费最多时间的golang程序
我一直致力于优化分析社交图数据的代码(在https://blog.golang.org/profiling-go-programs的帮助下),并且我已经成功地修改了很多慢代码。
所有数据首先从db加载到内存中,从那里分析数据出现CPU绑定(最大内存消耗<10MB,CPU1@100%)
但是现在我程序的大部分时间似乎都在 runtime.osyield 和 runtime.usleep 中。有什么办法可以防止呢?
我设置了 GOMAXPROCS=1 并且代码不会产生任何 goroutines(除了 golang 库可能调用的)。
这是我 pprof 的前 10 名输出
_ /C_/code/sc_proto/* 函数是我的代码。
(更好的是,SVG 版本的图在这里:https ://goo.gl/Tyc6X4 )
go - 在 go lang 中分析 http 处理程序
我正在尝试分析我用 go 编写的 http 处理程序。在每个 http 请求中,从 S3 下载图像,调整大小/裁剪并写入响应。
我已经按照这个链接并尝试使用简单方法和困难方法来分析我的代码。现在,当我使用代码中提到的以下行时。
它不会在/tmp/profie[some number]/cpu.pprof
文件中写入任何内容
此外,当我使用defer profile.Start(profile.CPUProfile).Stop()
里面的行时serveHTTP
:
它在文件夹中创建多个文件/tmp/profile[some number]
。所以,第一个问题是为什么它没有写入文件,其次它不应该放在里面,serveHTTP method
因为服务器只会启动一次。因此main()
将serveHTTP
在每个请求上调用一次。
第1部分
第2部分 :
此外,在上述两部分中,第 128、137 和 171 行存在内存泄漏,对吧?另外,我没有找到任何关闭/销毁s3Client
and blobGiff
(byte []) 的选项。
go - Golang:如何在 Web 服务器中使用 pprof 获取计算时间
我已经构建了一个 Web 服务器并进行了ab(apache benchmark)测试。现在我想知道每个部分的计算时间。
我使用go tool pprof url:port/xxx
并获取了该程序的配置文件,但它没有告诉我计算时间(只有内存)。以下是结果:
在我的网络程序中,我添加了以下代码:
但它仍然不起作用。
我检查了http://blog.golang.org/profiling-go-programs,但xxx.prof
文件让我很困惑。我怎样才能生成这个xxx.prof
文件?而作者使用的go tool pprof xxx xxx.prof
,是不是说xxx
是生成的二进制文件xxx.go
呢?
无论如何,目标是获得计算时间,但如何?我是否必须生成此xxx.prof
文件才能实现此目标?
非常感谢
go - Go tool pprof list 命令给出'语法错误:“(”意外'
我有一个 cpu 配置文件,我一直在检查代码中的瓶颈,并且使用 top10 之类的命令可以正常工作。但是,当我想通过键入查看源代码列表时
Remove
我要列出的函数在哪里,它提供以下输出:
有任何想法吗?
performance - go 应用程序的 pprof CPU 配置文件未显示任何示例
我正在使用 pprof 分析 Go 应用程序。
该应用程序使用大约 4-10% 的 CPU 并让它运行一小会儿会产生大约 6-11kb 的配置文件。这向我表明它应该能够对一些活动进行采样。
但是,当我查看结果时,我看到以下内容:
有趣的信息似乎丢失了。有什么问题?
这是在 linux 上,带有 google-perftools 的 go 版本 1.6.1 和 pprof 版本 2.2.1(如果重要的话)。
go - pprof 来自包的源信息
当开源 Go 库的代码在本地运行pprof
时,你怎么能真正要求pprof
检查这些包的来源呢?
我想查看库的Get
调用sessions
,然后进入 Gorilla 的sessions
.
这显然是输出:
go - 如何分析 goroutines 的数量
基本上我想知道我的程序是否会随着时间的推移泄漏 goroutines。所以我想看看随着时间的推移有多少 goroutines 正在运行。有什么办法可以做到这一点pprof
吗?
我已经完成了go tool pprof http://localhost:8888/debug/pprof/block
。
这给了我被阻塞了多长时间,而不是有多少例程正在运行。