Per qualche ragione il mio ::Application#call
è incredibilmente lento. In un caso ci sono voluti 3,840ms
secondo la strumentazione di New Relic.Perché la chiamata # dell'applicazione dovrebbe essere lenta?
La documentazione solo descrive questo metodo come: Implements call according to the Rack API. It simply dispatches the request to the underlying middleware stack.
Ci vogliono più di 5 secondi per ottenere anche a ActionDispatch::Routing::RouteSet#call
, figuriamoci il metodo di mio controller.
Perché potrebbe essere così lento? E dove potrei provare a strumentare per approfondire ulteriormente?
Nessuno dei miei middleware sembrano essere particolarmente strano, o:
use Raven::Rack
use #<ActiveSupport::Cache::Strategy::LocalCache::Middleware:0x007fd836083e08>
use Rack::Runtime
use ActionDispatch::RequestId
use Rails::Rack::Logger
use Rack::Cors
use ActionDispatch::ShowExceptions
use ActionDispatch::DebugExceptions
use ActionDispatch::RemoteIp
use ActionDispatch::Callbacks
use ActiveRecord::ConnectionAdapters::ConnectionManagement
use ActiveRecord::QueryCache
use ActionDispatch::ParamsParser
use Clearance::RackSession
use Rack::Head
use Rack::ConditionalGet
use Rack::ETag
use ActionDispatch::Flash
use Rack::SslEnforcer
run CookacademyApi::Application.routes
Hai controllato la strumentazione del middleware su New Relic? Se c'è qualcosa di lento tra la chiamata all'app e la chiamata ai percorsi, potrebbe essere un middleware. Per vedere cosa c'è nella tua pila del middleware, puoi eseguire 'rake middleware'. – fivedigit
@fivedigit La strumentazione di middelware non sembra mostrarmi molto: http://cl.ly/image/1B3P143p2g3K –
@JoshSmith Hai trovato qualche soluzione? Sto anche affrontando lo stesso numero –