代码之家  ›  专栏  ›  技术社区  ›  Ben Crouse

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

  •  6
  • Ben Crouse  · 技术社区  · 16 年前

    我的Rails应用程序在我的暂存服务器上运行速度非常慢,这让我遇到了一些问题。最令人困惑的是,每个请求的日志输出的最后一行。

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

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

    6 回复  |  直到 16 年前
        1
  •  2
  •   Chris Farmiloe    16 年前

    当事情神秘的时候。。。。剖析者是你的朋友!

    探查器将统计哪些方法被调用最多,以及每个方法调用花费了多长时间。

    ruby-prof 当我在RubyLand的时候,它会为我提供一个很好的调用图(如果你想的话,可以用html格式),这样就可以很容易地看到哪些方法减慢了你的请求。

        2
  •  2
  •   Mark Swardstrom    14 年前

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

        3
  •  0
  •   Matt Darby    16 年前

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

        4
  •  0
  •   Matt Darby    16 年前

    我正准备用同样的答案重新审视这个问题,所以我将背负这个问题。这是一个非常小的ruby教授 snippet 从一个视图渲染。令人惊讶的是,引擎盖下发生了这么多事情。

        5
  •  0
  •   wvanbergen    16 年前

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

        6
  •  0
  •       16 年前

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

    Apache向rails发送请求,rails在其上工作,这就是您在生产日志中看到的内容。

    所有HTML仍然必须在浏览器上呈现(繁重的CSS、图像、js等)。试着使用firefox扩展httpwatch来了解UI元素的呈现时间,它应该会累积起来。

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