2015-05-08 33 views
8

我在Rails 4.2.1之上使用Grape爲我們的應用程序提供API。爲什麼ActionDispatch :: Routing :: RouteSet需要這麼長

但是,當我今天檢查Newrelic性能時,發現RackApp Proc#callGrape API::Root#call佔用了大量時間。 (見截圖)

enter image description here

然後我試圖與rack_timer登錄中間件所消耗的時間,發現ActionDispatch::Routing::RouteSet佔用了大部分的時間:

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 

甚至有案件在ActionDispatch::Routing::RouteSet中需要500ms - 1000ms。我怎麼能夠追蹤這個問題,我怎麼知道我在Rails路由中做了什麼錯誤?

非常感謝您的幫助。

+0

我有同樣的問題,你有沒有找到原因? – fuyi

回答

0

對我來說,事實證明Newrelic ruby​​ agent並不適用於rocket_pants,這是我用來構建API端點的gem。

有一個第三方的寶石「rocket_pants-RPM」來解決這個問題,但原來一個站從newrelic_rpm版本3.9+,努力解決該問題,請嘗試使用叉形版本在https://github.com/SpartaSales/rocket_pants-rpm

這新增報告後,新報告如何尋找我。

newrelic request time percentage

相關問題