gpt4 book ai didi

ruby-on-rails - 我如何弄清楚为什么我的使用 mod_rails 的 rails 3 应用程序如此缓慢?

转载 作者:行者123 更新时间:2023-12-04 03:40:59 26 4
gpt4 key购买 nike

我使用 Rails 3.0.0 和 Ruby 1.9.2 开发了一个小型 Rails 应用程序。在我的个人电脑上测试时,它的性能很好。我把它放在我的 VPS 上进行生产,使用 Apache 和 mod_rails,有时性能很糟糕。

以下是来自 production.log 的示例:

Started GET "/tracker" for XX.XX.XX.XX at 2010-11-21 21:49:56 -0500
Processing by FleetsController#index as HTML
Rendered layouts/_stylesheets.html.haml (0.8ms)
Rendered layouts/_header.html.haml (1.0ms)
Rendered layouts/_footer.html.haml (0.0ms)
Rendered pages/about.html.haml within layouts/application (4.5ms)
Completed 200 OK in 15ms (Views: 14.3ms | ActiveRecord: 0.0ms)

Started GET "/tracker/" for XX.XX.XX.XX at 2010-11-21 21:50:02 -0500
Processing by FleetsController#index as HTML
Rendered layouts/_stylesheets.html.haml (0.7ms)
Rendered layouts/_header.html.haml (1.1ms)
Rendered layouts/_footer.html.haml (0.0ms)
Rendered fleets/index.html.haml within layouts/application (7.8ms)
Completed 200 OK in 1901ms (Views: 7.8ms | ActiveRecord: 1.5ms)

Started GET "/tracker/fleets/XXXXXXXXX" for XX.XX.XX.XX at 2010-11-21 21:50:06 -0500
Processing by FleetsController#show as HTML
Parameters: {"id"=>"XXXXXXXXX"}
Rendered fleets/_details_inner.html.haml (1.2ms)
Rendered fleets/_details.html.haml (2.1ms)
Rendered fleets/_summary.html.haml (3.5ms)
Rendered fleets/_scouts_inner.html.haml (1.3ms)
Rendered fleets/_scouts.html.haml (3.5ms)
Rendered reports/_report.html.haml (0.5ms)
Rendered fleets/_reports.html.haml (3.0ms)
Rendered fleets/_recon_form.html.haml (39.9ms)
Rendered fleets/_recon.html.haml (40.8ms)
Rendered users/_user.html.haml (1.2ms)
Rendered fleets/_pilots.html.haml (1.9ms)
Rendered layouts/_stylesheets.html.haml (0.5ms)
Rendered layouts/_header.html.haml (0.9ms)
Rendered layouts/_footer.html.haml (0.0ms)
Rendered fleets/show.html.haml within layouts/application (60.2ms)
Completed 200 OK in 495ms (Views: 59.1ms | ActiveRecord: 2.9ms)



第一次命中没有任何数据库访问权限。第二个确实有数据库访问,但是生成 View 只用了 7.8 毫秒,数据库只用了 1.5 毫秒,但整个页面几乎 2 分钟都没有完成!这是一个非常常见的示例,但我有一些页面响应超过 14 秒的日志条目。不,这不是在重新启动后的初始 Rails 加载期间。

什么可能会占用那个时间?

1) 我是否误解了 ActiveRecord 时间报告,这实际上只是代码时间,但实时数据库时间是时间的流向?

2)我正在使用sqlite。我知道最终我可能不得不切换到 MySQL,因为我会遇到并发问题,因为(大多数)每个页面命中都会导致数据库写入。但是现在,我几乎没有流量;最多可能有 15 人同时在网站上。在上面的日志示例中,一次只有 1 次命中,每次命中之间有 4-6 秒的时间。我认为sqlite可以处理...

3) 我在共享 VPS 上。这意味着 VPS 上的其他用户可能同时在做一些导致服务器变慢的事情。大多数时候,我的 VPS 的 CPU 负载非常低,但也有可能是我不走运,并且在那一刻发生了一些事情。但是我经常看到这种情况发生,所以我不买它作为答案。

4) VPS只有512+512MB的内存。我显示有 150MB 可用空间,但是我是否可能只是达到内存限制而这是页面交换或其他什么?

5) 我还在日志中看到了一些 BusyException。我将 database.yml 超时增加到 15 秒(从 5 秒开始)以查看是否有帮助。没有做过真正的测试,因为看看它是否有。

我知道我可能没有提供足够的信息让你真正告诉我发生了什么,所以真正的问题是,我如何开始尝试追踪这个?

最佳答案

所以两件事..

  • 使用 New Relic 帮助诊断缓慢的代码
  • 根据日志记录,我敢打赌您正在执行一些数组操作或在 FleetsController#index 中返回大量项目......看起来您的应用程序代码正在那里做一些事情。

  • http://www.newrelic.com/

    如果这看起来不对,请在 FleetsController#index 中发布代码。但是 NewRelic 可以帮助您确定在缓慢的 Web 请求中您的周期究竟花在哪里。

    关于ruby-on-rails - 我如何弄清楚为什么我的使用 mod_rails 的 rails 3 应用程序如此缓慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4250074/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com