加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 我怎么弄清楚为什么我的rails 3 app,使用mod_r

发布时间:2020-12-17 01:58:15 所属栏目:百科 来源:网络整理
导读:我使用Rails 3.0.0和 Ruby 1.9.2开发了一个小型Rails应用程序.在测试期间,在我的个人计算机上,它的性能很好.我把它放在我的VPS上进行制作,使用Apache和mod_rails,有时表现很糟糕. 这是production.log中的一个例子: Started GET “/tracker” for XX.XX.XX.X
我使用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)

第一次点击没有任何数据库访问权限.第二个确实有一个数据库访问,但视图只需要7.8ms生成,而数据库只需1.5ms,但整个页面几乎不会完成2分钟!这是一个非常常见的例子,但我有一些日志条目,14秒的页面响应.不,这不是在重启后的初始rails负载期间.

什么可能占用那个时间?

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

2)我正在使用sqlite.我知道最终我可能不得不切换到MySQL,因为我会遇到并发问题,因为(大多数)每次点击都会导致数据库写入.但是现在,我几乎没有任何交通;网站上最多可能同时有15个人.在上面的日志示例中,每次只有一次命中,每次命中之间有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请求中花费周期的确切位置.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读