2015-05-08 32 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

相关问题