我有一个很大的看法,需要很长时间才能完成呈现内容。最好的方法是怎样进行配置的,哪部分视图占用最多的时间?我已经阅读了关于ruby-prof的内容,但我不确定在哪里放置它来剖析视图渲染。如果存在其他选项,我也想知道它们。Rails中的剖析视图
回答
如果您没有这样做,请首先在应用程序文件夹中检查文件夹log
。它包含您的应用程序的每个环境的日志文件。
为了剖析一个Rails应用程序,把你的测试文件夹your_app/test/profile
这不提供有关视图的哪一部分花费最多时间的信息,并且应用程序的环境/日志只给出粗略时间,例如多长时间进行部分渲染。 – astropanic 2011-02-14 09:01:17
和NewRelic的日志是有帮助的,但有时你需要更多。 NewRelic确实有一个免费的工具,可以帮助你在本地挖掘,像ruby-prof这样的工具会给你提供信息,但是很难知道如何处理它。
我在客户端的应用程序中发现了一个注册页面,其速度很慢,原因不明。日志证实它很慢,并且缓慢不是由于数据库引起的,但并没有帮助我看清问题所在。
https://github.com/brynary/rack-bug/
是很容易,红宝石教授使用,并且可以开启/关闭迅速,当你需要潜入东西被打开。我一直在帮助人们调整Rails应用程序时使用它。它帮助我了解哪个部分很慢,并且有一点试验和错误,我发现它是注册页面上时区的下拉菜单
在一页上它是(缓慢版本): <%= time_zone_select:用户,:的time_zone,TZInfo :: Country.get( “US”)区,{}%>
和另一个是: <%= f.time_zone_select:的time_zone,的ActiveSupport :: TimeZone.us_zones, :默认=>“太平洋时间(美国&加拿大)”%>
我的前/后数字:
orig template render 1392.91
fixed template render 165.56
fixed on REE instead of 1.8.7 100.70
我没有进一步挖掘,因为我有其他问题需要解决,但可以缓存时区并获得更快的响应。
你是如何解决这个问题的?我们也看到了同样的情况 - 我们的应用中有4个页面呈现时区(仅限美国),并且它们的渲染持续时间超过1200毫秒。把线路拿出来,就好像总共140ms。 – 2012-10-02 15:01:37
我刚刚使用了ActiveSupport :: TimeZone.us_zones而不是TZInfo :: Country.get(“US”)。zones。 – 2012-10-02 19:57:22
这其实很简单。我刚刚发现并修复了使用ruby-prof
的HAML模板的性能问题。模板的相关部分看起来是这样的:
- @collection.each do |x|
= render :partial => 'name', :locals => {:object => x}
我确信ruby-prof
是在Gemfile中暂时改变了到:
- require 'ruby-prof'
- RubyProf.start
- @collection.each do |x|
= render :partial => 'name', :locals => {:object => x}
- result = RubyProf.stop
- printer = RubyProf::CallStackPrinter.new(result)
- file = File.open('profile.html', 'w')
- printer.print(file)
- file.close
然后启动应用程序,打的页面几次,并在我的浏览器中打开新创建的profile.html
以查看哪个部分导致了问题。
快速进入瓶颈的最简单方法是使用NewRelics Developer模式,该模式在本地工作。
- 请确保您的Gemfile中有
ruby-prof
和newrelic_rpm
。 - 导航到
localhost:3000/newrelic
,并开始分析(在右边栏) - 做一个实际的要求,要分析,可能多次,以确保你没有衡量一些缓存&东西你的应用程序的页面。
- 导航回到newrelic开发人员模式,选择请求跟踪。
- 按“自我”列对表格进行排序。这是至关重要的,因为默认按总时间排序是误导性的。
- 看看前10名电话,他们是如何呼叫,你可能会发现瓶颈。
声明:我已将此排序功能推送到newrelic的开发人员模式,所以我有偏见。然而,如果你自己尝试。
- 1. Rails ActiveRecord数据剖析
- 2. 深度剖析可视化
- 3. 什么是在Django中剖析视图的最佳方式?
- 4. 剖析
- 5. 剖析图形着色器
- 6. ruby中的剖析器
- 7. OWIN Startup的剖析
- 8. Node.js的CPU剖析
- 9. 使用NVIDIA可视化剖析器剖析MATLAB mex CUDA应用程序
- 10. 回传剖析
- 11. Django剖析
- 12. Spring Boot剖析
- 13. 剖析.net库
- 14. Python剖析
- 15. 在Nutch中剖析Lucene
- 16. 剖析在Visual Studio中环
- 17. 剖析CSV在JavaScript中,每
- 18. 有没有什么办法来剖析ASP.NET MVC中视图的性能?
- 19. 剖析Ruby代码
- 20. 剖析vCard JSON C#
- 21. 剖析OpenCL内核
- 22. 剖析XSL性能
- 23. 剖析C + Python(SWIG)
- 24. 剖析猪查询
- 25. 剖析PHP在线
- 26. 剖析MapReduce作业
- 27. cuda可视化剖析器中的CPU和GPU定时器
- 28. Python的Django的剖析
- 29. Linux的Eclipse CDT剖析器
- 30. Visual Studio的剖析API
日志告诉每个部分渲染多少。你可以拆分你的视图来检查。 – apneadiving 2011-02-14 19:29:51