2014-03-28 85 views
6

絕不意味着,NewRelic正在通過風靡世界的許多成功部署。 但是在生產中使用它有什麼缺點?NewRelic PHP代理添加多少開銷?

PHP監視代理程序可用作.so擴展名。如果我理解正確,它會連接到另一個系統聚合服務,它將數據過濾並將其推送到NewRelic雲中。

這只是意味着它可以透明引擎蓋下。但是,這是真的嗎?任何監控,分析或API服務都會給整個堆棧增加一些開銷。 該擴展本身是0.6 MB,這加起來每個PHP進程,這不是太多,所以我關心的是CPU和IO。

woodzu.vipserv.org/ec2-with-newrelic.png 的圖像顯示在生產EC2 t1.micro與代理NewRelic的(頂部藍色)實例和W/O代理(其他線路)CPU利用率

  • 什麼是真正NewRelic的做什麼原因額外的開銷?
  • 使用它時有什麼不利之處?
+0

我也很好奇當從他們的站點上運行'默認'安裝設置的newrelic時,性能如何(特別是預期的延遲開銷)。我有多個負載均衡的圖像 - 我應該只在其中一個上運行newrelic嗎? – Ray

+0

我認爲如果我們能夠比較我們的結果會很好。 – WooDzu

回答

5

您的里程可能會有所不同根據設置,您的特定網站的代碼庫,等等

你看到的額外開銷不是使用的內存,而是跟蹤和分析你的php代碼,並收集它的分析數據以及DB請求分析。基本上一些額外的開銷掛鉤到每個PHP函數調用。如果您讓Xdebug或ZendDebugger在計算機上運行或分析,您會看到類似的開銷。任何模塊都會使用一些資源,一旦深入分析可能是最昂貴的,但我已經看到新的配置文件具有配置設置以回撥配置文件的密集程度,所以您可能能夠減輕它的打擊,而不是說Xdebug 。我們公司的網站整體服務器響應延遲時間大約增加了15-20%,當我們爲我們的所有網站打開它時生產機器。我只是在談論php-fpm生成初始響應的時間。我們的網站是http://www.nara.me。 newrelic-daemon和newrelic-sysmon服務也在運行,但我懷疑它們對響應時間有任何影響。

不要誤會我的意思,我喜歡新的遺物,但在我的具體情況撞撞演出]沒有讓我想保持我們所有的工作負載均衡機上運行的PHP模塊。我們可能會一直在一臺機器上運行它。我們打算保持sysmon的功能達到100%,並保持模塊禁用,以防需要進行故障排除。

我的建議是這樣的:

  • 裹在if(function_exists ($function_name))塊新的遺蹟功能的任何電話,以您的代碼可以如果你已經多個相同的運行沒有錯誤,如果新的遺蹟模塊沒有加載
  • 負載均衡器後面的服務器共享相同的代碼,只啓用一個圖像上的php模塊以節省性能。如果你爲此使用新的文物,你可以保持sysmon的東西運行。
  • 如果您剛一臺服務器,只啓用共享的PHP模塊,當你需要它 - 當你實際剖析你的代碼或MySQL,除非10-20%的性能損失並不

還有一件事要記住,如果你的主要信息來源是新的遺蹟網站:他們通過你監控的機器數量獲得報酬,所以不要指望他們說服你不要使用任何低於100%的即使不需要你的機器。我認爲其中的一個常見問題解答或博客基本上指出,您應該預計會對性能產生一定的影響,但是如果您有意使用該解決方案,並解決從中看到的問題,則應該補償丟失的延遲。我同意,但我認爲一旦你解決了這些問題,請將暴露限制在最小的服務器數量上。

+0

我喜歡只有1個服務器始終運行模塊的想法。它不會給我所有實例的詳細數據,但應該給出一個合理的估計,我可以從中找出一些解決方案。無論如何,我將更詳細地調查此問題,因爲此php.ini選項看起來很有前途:newrelic.transaction_tracer.detail = 0 – WooDzu

+0

@WooDzu我實際上在我的/etc/php.d目錄中重命名了'newrelic.ini'到機器上的'newrelic.ini.disabled'我不希望模塊在運行。這樣就沒有什麼是加載到PHP運行時。 – Ray

+0

@WooDzu只是一個更新。我很驚訝地看到,當我做了一個百勝餐飲更新它自動創建另一個'newrelic.ini',所以當我的PHP重新加載它重新開始!注意到20%的性能受到影響並找出答案。 – Ray

0

代理不應該增加多少開銷的它的設計方式。由於充分解決問題所需的詳細程度,這似乎是一個很好的問題要問在https://support.newrelic.com

+2

嗨瓦爾登。任何想法是如何設計的?這不是開源的,是嗎? – WooDzu

相關問題