ActionDispatch :: Routing :: RouteSet#调用Rails 4.1真的很慢

And*_*son 17 ruby-on-rails heroku mongodb actiondispatch ruby-on-rails-4.1

我搜索了几天但找不到这个问题的任何相关答案.

在Heroku上托管的我的Rails 4.1应用程序中,当负载增加时,一些PUT请求变得非常慢.今天最慢的是53秒.所有没有数据库(MongoDB)注册任何慢查询.通常这个请求需要0.3ms这么快.无论有效载荷是什么,请求都很慢.

在安装New Relic后,它更清楚了解情况,但我仍然不知道在哪里解决这个问题.

控制器中的代码很快,但根据New Relic,速度慢的是ActionDispatch :: Routing :: RouteSet #call

这是New Relic报道的转储:

Slowest components                      Count   Duration    %
ActionDispatch::Routing::RouteSet#call  1   53,000 ms   100%
Plugin::FetchablesController#update     1   38 ms       0%
Rails::Rack::Logger#call                1   1 ms        0%
ActionDispatch::Cookies#call            1   1 ms        0%
ActiveSupport::Cache::Strategy::LocalCache::Middleware#call 1   0 ms    0%
Rack::Runtime#call                      1   0 ms        0%
Total                                       53,000 ms   100%
Run Code Online (Sandbox Code Playgroud)

其他一些可能有帮助或可能与此有关的信息.我有路由的别名,但我不明白为什么这很重要.

namespace :plugin do
   resources :fetchables, path: :minables
end
Run Code Online (Sandbox Code Playgroud)

任何有关可能发生的事情以及我可以做些什么来修复它的想法都将不胜感激.

更新 所以它似乎与内存有关.当我们升级到Performance Dynos时,我们已经停止看到这些错误.但这似乎是Heroku严重错误配置的东西.

And*_*rth 2

速度下降表明这是 Heroku 特有的。这可能是为什么当您升级到 Performance Dynos 后问题就消失了。