我刚刚将 New Relic 插件添加到我的 Rails Heroku 应用程序中。由于 New Relic 向我显示每分钟左右的实时响应时间,我想知道此功能是否会在网站上产生大量流量(或任何额外费用)?
3 回答
当您将检测添加到您的应用程序时,该检测将在收集和传输数据时影响处理时间。调用检测的次数取决于您编写代码的方式和设置的模式(或者我想象的)。尽管用于衡量性能的 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 的几个低流量应用程序有任何开销。
New Relic Ruby 代理在应用程序的每个进程中生成一个后台线程。这些后台线程从您的进程中收集数据。数据被计算为平均值,并每 60 秒发送到 New Relic 的服务器。因此,New Relic 不会为您的应用程序生成任何“流量”。轻微的开销是由于 New Relic 使用少量内存和 CPU 来跟踪平均性能统计信息。New Relic 彻底测试代理以确保其开销最小。
我没有深入研究 Newrelic 提供的 Rack Middleware,但我不相信他们正在使用任何花哨的异步处理/发送统计信息。不过,他们可能会使用基于机架的会话,这(据我了解)可以充当一种队列;它只是不如 Sidekiq 或 Resque 等解决方案强大。所以......可能会有一些开销,但根据我的经验,这并不重要。