Подтвердить что ты не робот

ActionDispatch:: Routing:: RouteSet # вызов Rails 4.1 действительно медленный

Я искал дни, но не могу найти подходящих ответов на этот вопрос.

В моем приложении Rails 4.1, размещенном на Heroku, когда загрузка увеличивается, некоторые запросы PUT становятся ДЕЙСТВИТЕЛЬНО медленными. Самый медленный был сегодня 53 секунды. Все без базы данных (MongoDB) регистрируют любые медленные запросы. Обычно этот запрос занимает 0,3 мс так быстро. Запрос медленный, независимо от того, что представляет собой полезная нагрузка.

После установки New Relic он пролил еще немного света на ситуацию, но я до сих пор не знаю, где исправить эту проблему.

Код в контроллере работает быстро, но согласно New Relic, медленная работа - это ActionDispatch:: Routing:: RouteSet # call

Здесь дамп новой реликвии:

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.

4b9b3361

Ответ 1

Замедление является показателем того, что он специфичен по Героку. Вероятно, почему вы заметили, что проблема исчезла при обновлении до Performance Dynos.

Ответ 2

Вы можете использовать rack-mini-profiler, чтобы проверить, где находится настоящая проблема.