2011-12-22 47 views
2

根據我的heroku日誌,我的Rails應用程序平均服務於約1700至2500毫秒(這是整個往返)的請求。我使用新的遺蹟來剖析我的應用程序,似乎大部分請求並未花費在我的數據庫中,而是花在New Relic的「Web Transaction」部分。看起來「控制器」類別往往是請求中最慢的,其次是「數據庫」類別中的「SQL - SELECT」段。無法弄清楚我的Rails應用程序中導致我的性能瓶頸的原因

我不太確定什麼可能會導致我的控制器中出現性能瓶頸,我也不認爲如果不付費購買高級版本,我可以更深入地瞭解新的文物。我最近爲我的應用程序的外鍵添加了索引,儘管我認爲這在數據庫響應時間方面沒有太大區別。

我知道這還不是足夠的信息來弄清楚是什麼導致了這些瓶頸,但我甚至不知道從哪裏開始或者給出什麼信息。如果人們可以告訴我需要什麼信息來診斷這些問題,那麼這對我會有幫助。

+0

我聽說過使用[Rackamole](http://www.rackamole.com/home/screens)查找性能問題的好報告,如果New Relic沒有足夠的幫助,另一個工具可能派上用場。 – sarnold 2011-12-22 05:16:16

+0

最好的事情是發佈緩慢的動作源代碼。此外,請記住,如果您正在進行大量循環,則可能會出現瓶頸。 – 2011-12-22 05:17:30

+0

@SrdjanPejic我認爲這可能是。在我看來,我做了很多循環和關聯。將這些關聯轉換爲模型中的實例方法是否可以提高性能? – 2011-12-22 05:19:14

回答

2

Ruby的New Relic包含一個免費的獨立開發者模式。在RAILS_ENV = development中運行時,New Relic gem會添加一條路線,該路線將向您顯示每個請求的詳細配置文件。打了幾次應用程序後,請轉至http://localhost:3000/newrelic

該配置文件包括每個SQL查詢以及代碼組件的時間。您可以使用custom instrumentation將大塊代碼分解爲更小的片段(或單獨的方法),這些片段分別計時。此功能與您在付費Pro版本中獲得的交易記錄非常相似,主要區別在於您不想在生產中運行免費開發模式。

(全面披露:我對NR的工作沒有多少人知道關於免費開發模式,雖然如此,我認爲這是值得一提。)

你可能做的JavaScript加載速度更快出現的東西,如head.js,它會異步並行地加載你的JS文件。

+0

哦有趣。謝謝!順便說一句,我目前正在運行New Relic作爲Heroku插件,所以我認爲我沒有在開發中訪問它。我應該將它捆綁成一顆寶石嗎?這會對NR heroku插件產生不利影響嗎? – 2012-01-02 01:11:06

+0

你使用雪松堆棧嗎? newrelic_rpm gem將位於您的Gemfile中。如果您使用的是Bamboo,則會安裝該插件。無論哪種方式,當您在自己的機器上運行您的網站時,您都可以訪問NR開發模式。它嚴格地說,不與newrelic.com溝通。 – rkb 2012-01-02 05:30:51

+0

我在heroku上使用Bamboo,但在本地開發站點上似乎沒有NR開發模式。 '/ newrelic'路線不會退出。我通過heroku的命令行界面安裝了New Relic插件,並且我從不將開發代碼拉到開發階段,所以它在我的本地計算機上不存在是有道理的。我錯過了什麼? – 2012-01-05 02:44:52

相關問題