【发布时间】:2012-09-04 18:24:10
【问题描述】:
我有一个实时生产站点(生产模式)与一个以开发模式运行的测试站点一起运行。它们都在同一台机器上运行,使用 Rails 3、Apache 2 和 Phusion Passenger。如果我在生产站点上加载相同的页面,加载页面大约需要 4-5 秒。如果我在测试站点上请求相同的页面,则(仅)大约需要 0.5 秒。 10倍的主要差异。一直认为生产会比开发快:(如果我在生产站点上重新加载页面,加载时间保持不变。这是怎么回事?我该如何调试这个问题?因为现在生产站点太慢了即使没有任何流量。
我对其他 Web 服务器进行了一些额外的测试,特别是 Litespeed 甚至 Webbrick。两者都表现出相同的奇怪行为。生产模式比开发模式慢十倍。所以它可能与 Rails 相关。但我不能把手指放在它上面。由于日志告诉我页面渲染速度很快,但是页面出现在我的屏幕上之前需要很长时间。
【问题讨论】:
-
Firebug 中的“网络”面板对每个请求所花费的时间进行了很好的细分。这会让你看看是否有任何特定的子请求是罪魁祸首。可能是一个不错的起点?
-
除了 Firebug,我建议添加 New Relic 性能监控。它检查您的 Rails 代码的哪些部分运行缓慢,并检查服务器和最终用户浏览器之间的性能。有时大部分时间可以通过网络发送单个资产。
标签: ruby-on-rails-3 apache2 passenger