ActionDispatch :: Routing :: RouteSet#调用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% 

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

 namespace :plugin do resources :fetchables, path: :minables end 

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

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

减速表明它是Heroku特有的。 您升级到Performance Dynos时可能会看到问题消失的原因。

您可以使用rack-mini-profiler来检查真正的问题所在。