如何在Ruby on Rails中对请求进行分析?

11

如何对控制器动作进行性能分析?

我的某个视图渲染时间较长,我想进行分解。我看到了script/performance/profiler,但似乎只能访问全局范围。

3个回答

8

我尝试按照这里给出的链接中的说明进行操作,但发现从Rails 2.3.2开始,script/performance/request已被删除。 - Alex D
是的,这个答案是针对Rails-2的,因为我在2010年给出了它。不确定Rails 3如何处理这个问题... - Taryn East
1
变更日志(http://rails.rubyonrails.org/files/railties/CHANGELOG.html)显示:删除 script/performance/request,改用性能集成测试。[Pratik Naik]“要继续使用 script/performance/request,请安装 request_profiler 插件: script/plugin install git://github.com/rails/request_profiler.git” - Taryn East

2
Ruby on Rails控制台应该会显示哪些局部视图需要花费更多时间进行渲染。如果这还不够,你可以安装new relic gem(https://github.com/newrelic/rpm),并在开发者模式下使用它,这将为你提供概述信息。
如果你在Heroku上部署,你可以添加免费版的rpm,这将为你的运行应用程序提供相同的统计信息。
Ruby有一个分析器(http://ruby-prof.rubyforge.org/),它可以显示内存使用情况、调用时间等,但可能很难将你的代码与框架代码区分开来。

New Relic可以提供一些信息,但它没有逐行代码分析功能,这对于完整的性能分析是必要的。 - Chris Nicola
不要在windof下面。 - halfbit

0

我在https://github.com/bhb/rack-perftools_profiler方面取得了一些成功。

它可以让你对单个或多个请求进行任何cputime、方法、对象分配或walltime的分析,并通过Rack中间件进行良好的集成。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接