2015-05-08 8 views
8

Sto usando uva in cima Rails 4.2.1 per fornire API per la nostra applicazione.Perché ActionDispatch :: Routing :: RouteSet vuole così tanto tempo

Ma quando controllo Newrelic per le prestazioni oggi ho scoperto che RackApp Proc#call e Grape API::Root#call richiedono molto tempo. (Si veda lo screenshot)

enter image description here

Poi ho provato a registrare il tempo consumato in middleware con rack_timer e ha scoperto che ActionDispatch::Routing::RouteSet sta prendendo la maggior parte del tempo:

Rack Timer (Application Action) -- ActionDispatch::Routing::RouteSet: 67.12579727172852 ms 
Rack Timer (Application Action) -- ActionDispatch::Routing::RouteSet: 101.51457786560059 ms 
Rack Timer (Application Action) -- ActionDispatch::Routing::RouteSet: 84.18059349060059 ms 
Rack Timer (Application Action) -- ActionDispatch::Routing::RouteSet: 1236.2565994262695 ms 
Rack Timer (Application Action) -- ActionDispatch::Routing::RouteSet: 8.124351501464844 ms 
Rack Timer (Application Action) -- ActionDispatch::Routing::RouteSet: 55.65309524536133 ms 

ci sono anche casi che prendere 500ms - 1000ms in ActionDispatch::Routing::RouteSet. Come avrei potuto rintracciare questo problema e come potevo sapere che cosa ho fatto di male in percorsi Rails?

Grazie mille per l'aiuto.

+0

Ho lo stesso problema, hai trovato la causa? – fuyi

risposta

0

Per me, si scopre che l'agente Newrelic rubino does't lavoro con rocket_pants, la gemma che uso per costruire endpoint API.

C'è un terzo gioiello 'rocket_pants-rpm' per risolvere questo problema, ma l'originale una fermata di lavoro da newrelic_rpm versione 3.9+, per risolvere il problema, provare a utilizzare la versione a forcella a https://github.com/SpartaSales/rocket_pants-rpm

Questo è come newrelic relazione guarda per me, dopo l'aggiunta di questo gioiello.

newrelic request time percentage

Problemi correlati