Я только что добавил надстройку New Relic в свое приложение Rails Heroku. Поскольку New Relic показывает мне время отклика в реальном времени для каждой минуты или около того, мне интересно, создает ли эта функция много трафика на сайте (или какие-либо дополнительные затраты)?
Новый реликтовый трафик
Ответы (3)
Когда вы добавляете инструментарий в свое приложение, этот инструментарий будет влиять на время обработки при сборе и передаче данных. Сколько раз эта инструментация вызывается, зависит от того, как вы написали свой код и в каком режиме вы его установили (по крайней мере, я так думаю). Я считаю крайне маловероятным (и ироничным), что драгоценный камень, используемый для измерения производительности, может значительно снизить производительность сайта.
New Relic описывает свои режимы приложений следующим образом:
Производственный режим
Инструментарий с низкими издержками, который собирает подробную информацию о вашем приложении, работающем в рабочей среде, и передает ее на newrelic.com, где вы можете отслеживать ее в режиме реального времени.
Режим разработчика
ПО промежуточного слоя Rack, которое сопоставляет /newrelic с приложением для отображения подробных показателей производительности на постраничной основе. Устанавливается автоматически в приложениях Rails.
Пока здесь (https://newrelic.com/docs/ruby/ruby-agent-configuration) они высказывают свое мнение о режиме разработчика в продакшене:
developer_mode — в приложениях Rails, если для режима разработчика задано значение true, устанавливается режим разработчика New Relic. Как правило, это должно быть ложным во всех средах, кроме режима разработки, поскольку это приводит к высоким накладным расходам, которые были бы недопустимы в рабочей среде.
Я не уверен, что означают "низкие накладные расходы", "высокие накладные расходы" и "невыносимые" в контексте New Relic.
Лично я не заметил каких-либо накладных расходов в нескольких приложениях с низким трафиком, в которых я использовал New Relic.
newrelic_rpm
, но он не предназначен для работы где-либо (в Heroku или где-то еще). Но в вашей локальной среде разработки включите его, и вы получите множество подробностей по каждому сделанному вами запросу.
- person rkb; 03.09.2014
Агент New Relic Ruby порождает фоновый поток в каждом из процессов вашего приложения. Эти фоновые потоки собирают данные из ваших процессов. Данные рассчитываются как средние и отправляются на серверы New Relic каждые 60 секунд. Таким образом, New Relic не генерирует никакого «трафика» для вашего приложения. Небольшие накладные расходы связаны с тем, что New Relic использует небольшой объем вашей памяти и ЦП для отслеживания средней статистики производительности. New Relic тщательно тестирует агент, чтобы убедиться, что его накладные расходы минимальны.
Я не копался в Rack Middleware, предоставленном Newrelic, но я не верю, что они используют какую-то причудливую асинхронную обработку/отправку статистики. Однако они, вероятно, используют сеанс на основе стойки, который (насколько я понимаю) может действовать как своего рода очередь; просто он не такой надежный, как решения вроде Sidekiq или Resque. Так что... вероятно, есть некоторые накладные расходы, но, по моему опыту, они не значительны.