Tag: newrelic

为什么ActionDispatch :: Routing :: RouteSet需要这么长时间

我在Rails 4.2.1上使用Grape为我们的应用程序提供API。 但是当我今天检查Newrelic的性能时,我发现RackApp Proc#call和Grape API::Root#call占用了大量的时间。 (见截图) 然后我尝试使用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 […]

随机导轨ActionView :: MissingTemplate错误

我一直在使用New Relic来跟踪性能,并且遇到了很多类似的错误: ActionView::MissingTemplate: Missing template layouts/templates/home with {:locale=>[:en], :formats=>[:jpeg, “image/pjpeg”, :png, :gif], :handlers=>[:erb, :builder, :haml]}. Searched in: * “/app/app/views” * “/app/vendor/bundle/ruby/2.0.0/gems/gmaps4rails-1.5.6/app/views” * “/app/vendor/bundle/ruby/2.0.0/gems/devise-3.1.0/app/views” * “/app/vendor/bundle/ruby/2.0.0/gems/ckeditor-4.0.6/app/views” * “/app” * “/” 问题是,该位置的模板存在并且通常是可访问的。 我的猜测是,这可能是由于重定向,因为我看到主要是主页,404和500页。 我不确定该去哪里,并希望得到任何建议。

有没有办法手动推送NewRelic错误?

在我们的Rails应用程序中,我们拯救ApplicationController上的大多数exception以提供正确的API响应,但仍希望使用ErrorCollector跟踪发生的错误。 有没有办法手动向NewRelic发送错误?

Heroku上的奇怪的TTFB(第一个字节的时间)问题

我们正在改进我们在Heroku托管的rails应用程序的性能(rails 3.2.8和ruby 1.9.3)。 在此过程中,我们遇到了一个令人担忧的问题,其源头似乎非常难以追踪。 让我快速解释一下我们如何体验这个问题以及我们如何尝试隔离它。 – 从6月左右开始,我们在整个网站的Time to First Byte中经历了奇怪的滞后行为。 使用该网站时问题很明显(有时候应用程序没有响应10-20秒),并且它也通过webpagetest.org出现在瀑布分析中。 我们的总部设在丹麦,但是从任何主机那里得到这个结果。 为了确认问题,我们进行了基准测试,我们向一个简单的页面发送了300个相同的请求并测量了响应时间。 如果我们向首页发送300个请求,则中位响应时间低于1秒,这是相当不错的。 令我们感到害怕的是,60个请求占用的时间增加了一倍,而其中40个请求占用的时间超过4秒。 有些请求需要16秒。 这些慢速请求都没有出现在我们用于性能监控的New Relic中。 无论我们如何扩展我们的Web流程,都不会显示请求排队,结果也是一样的。 尽管如此,我们还是拒绝承认问题是由应用程序代码引起的,所以我们尝试了另一个实验,我们通过机架中间件响应请求。 通过将此中间件(TestMiddleware)放置在机架堆栈的开头,我们在它甚至命中应用程序之前返回了一个请求,确保以下任何中间件或rails应用程序都不会导致延迟。 Middleware setup: $ heroku run rake middleware use Rack::Cache use ActionDispatch::Static use TestMiddleware use Rack::Rewrite use Rack::Lock use Rack::Runtime use Rack::MethodOverride use ActionDispatch::RequestId use Rails::Rack::Logger use ActionDispatch::ShowExceptions use ActionDispatch::DebugExceptions use ActionDispatch::RemoteIp use Rack::Sendfile use […]

在Rails / Heroku上对Postgres数据库的意外SQL查询

我正在使用NewRelic向我的一个Rails应用程序发出一个非常长的请求,发现一些看起来完全是外来的SQL查询占用了相当长的时间。 我已经谷歌了,但我空洞地说出它们是什么,更不用说我是否可以防止它们发生。 SELECT COUNT(*) FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace WHERE c.relkind in (?, ?) AND c.relname = ? AND n.nspname = ANY (current_schemas(false)) …和… SELECT a.attname, format_type(a.atttypid, a.atttypmod), pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod FROM pg_attribute a LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum WHERE […]

随机慢速Rack :: MethodOverride#调用Heroku上的rails应用程序

环境: Ruby:2.1.2 Rails:4.1.4 Heroku的 在我们在Heroku上托管的rails应用程序中,有时请求需要很长时间才能执行。 它只有1%或更少,但我们无法弄清楚它发生了什么。 我们安装了newrelic代理,它说它不是请求排队 ,它是占用所有时间执行的事务本身。 但是,事务跟踪显示如下: (同样的要求大多数时间只需要100毫秒执行) 据我所知,在我们的控制器被调用之前消耗的时间。 它消耗了 Rack::MethodOverride#call 这就是我们无法理解的。 此外,大多数时候(甚至总是,我们不确定)这种情况发生在移动设备发送的POST请求上。 这可能与缓慢的连接有关吗? (虽然POST-payload非常小)。 有没有人经历过这个? 关于如何继续探索这个问题的任何建议表示赞赏。 提前致谢!