首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么ruby中的内存分析如此困难?

为什么ruby中的内存分析如此困难?
EN

Stack Overflow用户
提问于 2013-05-01 03:38:24
回答 3查看 6K关注 0票数 25

或者更确切地说,为什么没有更好的工具来分析ruby中的内存,特别是rails应用程序?

最近,我们的rails应用(托管在heroku上)开始在worker dynos中看到很多R14错误。这意味着我们的内存即将耗尽。将dynos调到2x (512mb -> 1 1GB)只能暂时缓解这个问题,让我相信在某个地方有内存泄漏。当然,我的下一步是找到一个好的分析宝石,可以帮助我发现泄漏的来源。

也许我只是对可用的工具一无所知,或者我只是不知道如何使用我现有的工具。我的愿望是安装一个gem,然后运行内存使用统计报告。访问端点来获取报告并不是真正可行的,因为我的内存问题是与运行延迟作业的worker dynos隔离的。

我看过memprof,但它只有1.8。

我看过ruby-prof (很棒),但是内存分析需要一个打了补丁的红宝石解释器。

我看过GC::Profiler,但我不知道如何查找它的内存泄漏。

那么,在ruby中查找内存泄漏是不是很难呢?或者我有没有弄错重点?

EN

回答 3

Stack Overflow用户

发布于 2013-05-01 04:43:18

根据您的“泄漏类型”,您可以对ruby运行valgrind。不过,可能需要重新编译。一般来说,这很难,因为默认情况下,ruby在不触发任何事件的情况下进行方法分配,所以很难跟踪。另请参阅perftools.rb project,它在某种程度上绕过了这个限制。

票数 4
EN

Stack Overflow用户

发布于 2016-11-12 00:41:34

最近,我用Skylight分析web和后台工作者的方法,然后寻找优化的机会,取得了一些成功。当你发布这个问题时,它可能还没有出现。缺点是它只能帮助您在登台或生产环境中进行调试,而不是开发环境,因此开发循环可能会非常慢。

如果您使用的是Sidekiq,请确保您同时安装了skylight-rubysidekiq-skylight,以便在您的web服务器和后台工作程序上进行性能分析。

祝好运!

票数 2
EN

Stack Overflow用户

发布于 2020-06-03 18:43:56

如果您的应用程序运行在带有dtrace或类似技术(如SystemTap )的操作系统上,那么有一种很好的方法。在我的例子中,我们使用RHEL/CentOS,它具有后者:

https://lukas.zapletalovi.com/2016/08/probing-ruby-20-apps-with-systemtap-in-rhel7.html

您可以轻松地连接到生产应用程序并“注入”性能分析代码片刻,跟踪调用、内存、CPU时间或I/O,然后随时“断开连接”。它非常高效,所以你可能不会注意到任何严重的减速(除非你搞砸了你的脚本)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16307696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档