我的Rails应用程序在开发模式下运行良好(没有缓存),但在生产中很难加载主模型的:show视图。该日志仅显示最多约45毫秒的SQL查询,但实际的渲染时间约为15秒。我正在使用acts_as_ferret和paperclip,但是paperclip只调用after_save循环而不执行任何操作。当时网上只有1或2个用户,所以我不认为我有一个备份队列,但我真的无法缩小网站上的内容。我该怎么做才能更准确地测量服务器端功能,看看什么是备份加载时间?
在:show view
中调用的内容这就是它。我应该如何将HABTM称为Rails最佳实践?现在我正在做类似的事情:
<%= @video.tags.map {|t| link_to t.name, path} %>
<%= @video.categories.map {|c| link_to c.name, path} %>
#etc....
我很确定有更好的方法可以做到这一点,我愿意接受建议
答案 0 :(得分:3)
以下是一些可以确定瓶颈的工具:
http://newrelic.com/ 将分析服务器端的数据库查询时间和红宝石执行时间等内容
http://developer.yahoo.com/yslow/ 将在客户端分析响应时间,渲染时间和javascript等内容
没有很多给定的代码可以运行,但有一些通常对rails find
或where
有帮助的事情:
:includes
减少查询次数。:select
而不是选择所有列关于这个问题的重要联系:
http://snippets.dzone.com/posts/show/2089
http://www.fortytwo.gr/blog/18/9-Essential-Rails-Tips
http://www.engineyard.com/blog/2009/thats-not-a-memory-leak-its-bloat/
答案 1 :(得分:0)
也许在该机器上运行的其他东西都是问题所在。您是否尝试过分析机器 - 例如,运行top
来检查CPU使用情况?