九個衡量 Rails 應用性能的小方法

alt

你有個絕佳的商業創意,日復一日地將它完善豐滿起來。後來,你僱了一羣天賦異稟的開發者、Web 設計師和用戶體驗專家,他們用一種很是棒的框架——Ruby on Rails 幫你實現長久以來的夢想。html

你的網站誕生了!可是,不幸的是,你沒有足夠的資金用於搭建完善的服務器,你只是將她部署在內存有限的 linux 機器上。一個月的興奮期以後,你忽然意識到,用戶的訪問量還不足以帶來收益。更糟的是,用戶流失率高於預期。因而你當即採起措施,尋找網站沒法知足用戶的具體需求。事實是,用戶但願網站響應及時、值得信賴,而這些,你的網站都沒法達到。mysql

好吧,在給開發團隊分配項目時,你沒有考慮到這些。那麼,如今該怎麼作呢?linux

「性能提高」出場的時候到了。爲了優化系統,你須要收集系統性能數據。對於一個龐雜的程序,人們很難準確預測性能問題的確切位置。而一旦發現性能瓶頸的所在,問題就迎刃而解了。sql

這裏有一些衡量和監控 Ruby on Rails 應用性能的法寶,其中的一些也可應用在其餘 Web 應用中。數據庫

1. Rails 性能測試 – BenchMarking瀏覽器

alt

「不過早優化」和「採用基準測試」是性能優化的基本準則。基準測試是必須的,沒有基準測試,優化的效果就無從衡量,全部優化的第一步都應該是基準測試。Rails 從2.2開始內置了 Benchmarker 和 Profiler 工具,經過 Rails 性能測試,可以發現應用資源的存儲或速度瓶頸,而 BenchMarker 將有助於瞭解各項性能測試運行的速度有多快。ruby

2. Rails 性能測試 – Profiling性能優化

alt

有人形容 Benchmarker 和 Profiler 是性能調優的左右手,Profiler 有助於瞭解性能測試的細節,提供緩慢或內存不足部分的深刻圖像。每一個測試用例在 Profiling 模式下運行一次,內置的 Profiler 實現得很簡單,在 ruby2.2 中只有150行代碼。服務器

3. Rails Logger網絡

alt

Rails 內建了 Log 功能,或者更準確地說,Rails 暴露了 Logger 對象,該對象能夠在全部的 Rails 程序中使用。獲取性能信息最簡單的方式是分析 Rails Log,它可以提供運行每條請求花費的時間信息,細分花費在渲染和 SQL 中的時間信息。

4. Rails Analyzer

alt

Rails 分析器包括一系列工具 [生產日誌分析器,運行剖析,Rails 分析工具, SQL 依賴記錄] 用來捕捉應用中最慢的地方,讓錯誤優化變得更有針對性。

5. Rails Footnote

alt

這個工具能夠顯示應用的 footnotes,以便於調試,除此以外,它還能在編輯器裏直接打開文件的連接。

6. Query Reviewer

alt

Query Reviewer 其實是對 mysql 的 explain 命令的封裝,是一個方便的用於測試數據庫查詢效率的插件。它可以生成一個包含全部 SELECT 查詢的解釋頁面,評估一個頁面的數據庫使用狀況,展現交互記錄。

7. Slim Scrooge

alt

Slim Scrooge 是一個優化層,用於確保你的 Rails 應用只在須要的時候才從數據庫獲取內容,最大限度的下降網絡流量,減小 SQL 執行次數以及優化 Ruby 數據類型的轉換過程。

8. OneAPM

alt

OneAPM for Ruby 可以深刻到全部 Ruby 應用內部完成應用性能管理和監控,包括代碼級別性能問題的可見性、性能瓶頸的快速識別與追溯、真實用戶體驗監控、服務器監控和端到端的應用性能管理。追溯性能瓶頸至:性能表現差的 SQL 語句、第三方 API、Web Services、Caching Layers、後臺任務等。

9. Firebug

alt

聽說,對於網頁開發人員來講,Firebug 是 Firefox 瀏覽器中最好的插件之一。用戶能夠利用它除錯、編輯、刪改任何網站的 CSS、HTML、DOM、與 JavaScript 代碼。此外,Firebug也提供擴展的框架,例如 Yahoo! 的網頁速度優化建議工具 YSlow、FireCookie、FirePHP 等。除了一些很是優秀的功能,它還能夠用於監控網絡性能。使用它能夠看到每一個文件的加載時間,根據類型區分文件,檢查 http headers。

隨着互聯網應用大量涌現,應用性能的重要性也愈來愈被開發人員所重視。不及時改善性能會使用戶的一再流失。以上這些都是檢查 Rails 應用性能不錯的方法,它們或多或少解決了不少開發者的燃眉之急,若是你還有更好的招數,不妨切磋。

######翻譯改編自原做者:Fuad Bin Omar, COO, Nascenia 原文連接 http://www.nascenia.com/10-ways-and-tools-to-measure-performance-of-your-rails-application/

本文系 OneAPM 工程師翻譯。OneAPM 是應用性能管理領域的新興領軍企業,能幫助企業用戶和開發者輕鬆實現:緩慢的程序代碼和 SQL 語句的實時抓取。想閱讀更多技術文章,請訪問 OneAPM 官方博客

相關文章
相關標籤/搜索