Warum ActionDispatch :: Routing :: RouteSet so lange braucht

8

Ich verwende Grape zusätzlich zu Rails 4.2.1, um API für unsere Anwendung bereitzustellen.

Aber wenn ich heute Newrelic auf Leistung überprüfe, habe ich festgestellt, dass RackApp Proc#call und Grape API::Root#call viel Zeit in Anspruch nehmen. (Siehe Screenshot)

Dann habe ich versucht, die Zeit in Middleware mit rack_timer zu protokollieren und festgestellt, dass ActionDispatch::Routing::RouteSet die meiste Zeit beansprucht:

%Vor%

Es gibt sogar Fälle, die 500 ms - 1000 ms in ActionDispatch::Routing::RouteSet benötigen. 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.

    
larryzhao 08.05.2015, 16:44
quelle

1 Antwort

0

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

Es gibt ein drittes Juwel 'rocket_pants-rpm', um dieses Problem zu lösen, aber das Original funktioniert nicht mehr mit newrelic_rpm, Version 3.9+. Um das Problem zu beheben, verwenden Sie die gegabelte Version unter Ссылка

So sieht der newrelic-Bericht nach dem Hinzufügen dieses Edelsteins aus.

Prozentsatz der neuen Anfragezeit

    
fuyi 25.02.2017 22:26
quelle