或者说,为什么没有更好的工具来分析ruby中的内存,特别是rails应用程序?
最近我们的rails应用程序(在heroku上托管)已经开始看到工作人员中的大量R14错误.这意味着我们的内存不足.将dynos冲击到2x(512mb – > 1GB)仅暂时缓解了问题,导致我相信某处存在内存泄漏.当然,我的下一步是找到一个很好的分析宝石,可以帮助我发现泄漏的根源.
也许我只是不知道可用的工具,或者也许我不知道如何使用我的工具.我的愿望是,我可以安装一个gem,然后运行关于内存使用统计信息的报告.触发端点获取报告并不真正可行,因为我的内存问题被隔离到运行延迟作业的worker dynos.
我看过memprof,但只有1.8.
我看过ruby-prof(awesome),但内存分析需要一个补丁的ruby intepreter.
我看过GC::Profiler,但我不明白如何找到内存泄漏.
那么在Ruby中找到内存泄漏很难呢?还是我以某种方式错失了点?
解决方法
根据您的“泄漏”类型,您可以运行valgrind对ruby.可能需要重新编译.一般来说,这是很难的,因为ruby做方法分配而不触发任何事件,默认情况下,这很难跟踪.另请参阅
perftools.rb project,这有些工作在这个限制.