为什么我的Rails服务器渲染时间不加起来?

时间:2009-01-14 14:58:43

标签: ruby-on-rails ruby performance

我的登台服务器上的Rails应用程序速度非常慢,我遇到了一些麻烦。最令人困惑的是每个请求的日志输出的最后一行。

看起来,View和Database时间甚至都不接近整个渲染时间。在一个页面上,完成时约为1000毫秒,视图约为450毫秒,约20毫秒数据库。

呈现页面所需的其余时间来自哪里?

6 个答案:

答案 0 :(得分:2)

当事情是神秘的......分析师是你的朋友!

分析器将绘制最多调用哪些方法的统计信息以及每次方法调用花费的时间。

当我在RubyLand中时,

ruby-prof为我做了诀窍,并且它会产生一个很好的调用图(如果你想要的话,用html格式),这样可以很容易地看出哪些方法正在减速你的要求。

答案 1 :(得分:2)

我发现可以在创建和准备Active Record对象的Rails上花费很大一部分渲染时间。查询之后和查看之前。例如,取决于从“查找”返回的记录数。

答案 2 :(得分:0)

我建议使用New Relic's RPM service。它有一个免费版本,但青铜服务(每月40美元)很棒,并进一步帮助追踪这些问题。

答案 3 :(得分:0)

我正准备用相同的答案重新审视这个问题,所以我只是背驮式。这是来自一个视图渲染的非常小的ruby-prof snippet。引人入胜的内容真是令人惊讶。

答案 4 :(得分:0)

除了渲染和数据库时间外,还需要花一些时间在控制器代码和Rails框架中。如果为登台服务器分配的资源太少,这可能会非常慢。但是,您不应该认为日志中的持续时间并不总是完美的,尤其是数据库持续时间。

答案 5 :(得分:0)

你的apache日志说什么?它肯定会有不同的数字来显示提供请求所需的时间。

Apache向rails发送请求并且rails对它起作用,这就是您在生产日志中看到的内容。

所有HTML仍然必须在您的浏览器上呈现(重型CSS,图像,js等)。尝试使用firefox扩展httpwatch来了解UI元素的渲染时间,它应该加起来。

如前所述,NewRelic应该给你在各种活动中花费的时间分解(M V C)

相关问题