除了之外,控制器中没有发生任何事情,视图中除了 HTML 之外也没有发生任何事情(我已经注释掉了两个地方的所有 Ruby 代码),加载页面仍然需要 5 秒以上:render 'mypage'
Completed 200 OK in 6258ms (Views: 5283.2ms | ActiveRecord: 14.6ms)
关于如何改进或配置它的任何建议?我遇到的每一个“解决方案”对我都没有影响。Rails-dev-tweaks 没有影响,更改资产调试标志没有效果;我实际上相信这一切都发生在请求资产之前。
1450 年 5 月 7 日更新
大家好 - 感谢您的回复。让我首先说我已将其范围缩小到资产;删除了大约六颗宝石和所有资产,首次加载的页面加载时间降至 1.3 秒,重新加载时间约为 150 毫秒。极好的。所以我现在的问题变成了如何正确配置像 rails-dev-tweaks 这样的 gem 来让它运行;我似乎找不到合适的配置。我们可能有一百左右的资产——也许更多。
回答您的问题:很遗憾,我无法复制和粘贴视图;但是,可以说它大约有 100 行 HTML,10 行 javascript,并且可能 30 行 HTML 中有一些 Ruby 代码,但我注释掉了所有 Ruby。
我试过 ruby-prof - 没有给我任何真正有用的东西
没有发出外部 HTTP 请求
ApplicationController 中有一个 before_filter,但即使将其注释掉也没有太大的区别。
我正在 Mac OS X 10.8 上开发
我正在使用 Rails 3.2.13
完全没有资产:第一页加载:
Completed 200 OK in 3418ms (Views: 1414.9ms | ActiveRecord: 74.6ms)
刷新页面:
Completed 200 OK in 140ms (Views: 120.8ms | ActiveRecord: 2.8ms)
有趣的是,rails -v
加载需要 4 秒:
ruby-1.9.3-p327@aidin ± time rails -v
Rails 3.2.13
rails -v 4.10s user 0.24s system 92% cpu 4.679 total
更新 2 1450 年 5 月 7 日
New Relic 告诉我,我认为是 Rails 依赖项(实际上是 ActionPack 依赖项),Journey 本身花费了过多的时间:
Metric Timestamp (s) Duration (ms) Exclusive (ms)
DashboardController#show 0.001 2,652 1917
详细信息页面显示了这个文件:
journey-1.0.4/lib/journey/router.rb
而这一行:
status, headers, body = route.app.call(env)
5 月 7 日更新 3日 @ 1509
进一步调查显示,除了移除所有资产外,移除所有 gem 还将响应时间缩短到可接受的 ~150 毫秒。放回宝石将其移动到 800 毫秒到 1500 毫秒;显然,仅在那些人身上发生了一些事情,导致了问题。
如果有人认为他们可以找出导致问题的宝石,我很乐意发布 Gemfile