【问题标题】:New Relic traffic新遗迹交通
【发布时间】:2026-01-07 09:05:02
【问题描述】:

我刚刚将 New Relic 插件添加到我的 Rails Heroku 应用程序中。由于 New Relic 向我显示每分钟左右的实时响应时间,我想知道此功能是否会在网站上产生大量流量(或任何额外费用)?

【问题讨论】:

  • 流量多?如果您的网站通过性能得到改善并且速度更快,那么它是否与流量有关?

标签: ruby-on-rails heroku newrelic


【解决方案1】:

当您向应用添加检测工具时,该检测工具会在收集和传输数据时影响处理时间。调用检测的次数取决于您编写代码的方式和设置的模式(或者我想象的)。尽管用于衡量性能的 gem 会显着降低站点的性能,但我发现它极不可能(而且具有讽刺意味)。

New Relic 对其应用模式的描述如下:

生产模式

捕获详细信息的低开销仪器 您的应用程序在生产中运行并将它们传输到 newrelic.com,您可以在其中实时监控它们。

开发者模式

将 /newrelic 映射到应用程序的 Rack 中间件,用于逐页显示详细的性能指标。在 Rails 应用程序中自动安装。

在这里 (https://newrelic.com/docs/ruby/ruby-agent-configuration) 他们就生产中的开发者模式发表了自己的看法:

developer_mode - 在 Rails 应用程序中,将开发者模式设置为 true 会安装 New Relic 开发者模式。这在除开发模式之外的所有环境中通常都应该是错误的,因为它会引入在生产中无法容忍的高开销。

我不确定在 New Relic 的上下文中“低开销”、“高开销”和“无法容忍”是什么意思。

就我个人而言,在我使用 New Relic 的几个低流量应用程序中,我没有注意到任何开销。

【讨论】:

  • 仅供参考,如果您使用 Heroku 的 New Relic 插件,“开发者模式”将不是一个选项。
  • 开发者模式是您安装newrelic_rpm gem 时的一个选项,但它并非设计为在任何地方(Heroku 或其他)在生产环境中运行。但是在您本地的开发环境中,打开它,您将获得有关您提出的每个请求的大量详细信息。
【解决方案2】:

New Relic Ruby 代理在应用程序的每个进程中生成一个后台线程。这些后台线程从您的进程中收集数据。数据被计算为平均值,并每 60 秒发送到 New Relic 的服务器。因此,New Relic 不会为您的应用程序生成任何“流量”。轻微的开销是由于 New Relic 使用少量内存和 CPU 来跟踪平均性能统计信息。 New Relic 彻底测试代理以确保其开销最小。

【讨论】:

  • 那个后台线程是不是类似于 Heroku 的这个 web worker 的东西?我的意思是 Heroku 会为此向我收取额外费用,还是仅使用我在设置中设置的资源? (这里的网站很小。)
  • 不,Heroku 不对后台 New Relic 报告线程收费。这是一个线程,而不是一个进程。
【解决方案3】:

我没有深入研究过 Newrelic 提供的 Rack Middleware,但我不相信他们正在使用任何花哨的异步处理/发送统计信息。不过,他们可能会使用基于机架的会话,这(据我了解)可以充当一种队列;它只是不如 Sidekiq 或 Resque 等解决方案强大。所以...可能会有一些开销,但根据我的经验,这并不重要。

【讨论】: