2015-05-08 11 views
8

Ich benutze Grape oben auf Rails 4.2.1 API für unsere Anwendung zu bieten.Warum ActionDispatch :: Routing :: RouteSet dauert so lange

Aber wenn ich Newrelic für die Leistung heute überprüfen, fand ich, dass RackApp Proc#call und Grape API::Root#call viel Zeit in Anspruch nehmen. (Siehe Screenshot)

enter image description here

Dann habe ich versucht, die Zeit in Middleware mit rack_timer und gefunden verbraucht loggt sein, dass ActionDispatch::Routing::RouteSet nimmt die meiste Zeit auf:

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 

Es gibt sogar Fälle, in denen Nehmen Sie 500ms - 1000ms in ActionDispatch::Routing::RouteSet. Wie könnte ich dieses Problem aufspüren und wie könnte ich wissen, was ich bei den Rails Routen falsch gemacht habe?

Vielen Dank für die Hilfe.

+0

ich gleiche Problem haben, haben Sie festgestellt, die Ursache? – fuyi

Antwort

0

Für mich stellt sich heraus, dass Newrelic Ruby Agent nicht mit rocket_pants funktioniert, dem Juwel, mit dem ich API-Endpunkte erstelle.

Es gibt eine dritte Partei gem ‚rocket_pants-rpm‘ um dieses Problem zu lösen, aber die ursprüngliche eine Haltestelle von newrelic_rpm Version arbeiten 3.9+, das Problem zu beheben, versuchen Sie die Gabel Version bei https://github.com/SpartaSales/rocket_pants-rpm

Verwendung Dies wird wie newrelic report aussieht, nachdem ich dieses Juwel hinzugefügt habe.

newrelic request time percentage