你有個絕佳的商業創意,日復一日地將它完善豐滿起來。後來,你僱了一羣天賦異稟的開發者、Web 設計師和用戶體驗專家,他們用一種很是棒的框架——Ruby on Rails 幫你實現長久以來的夢想。html
你的網站誕生了!可是,不幸的是,你沒有足夠的資金用於搭建完善的服務器,你只是將她部署在內存有限的 linux 機器上。一個月的興奮期以後,你忽然意識到,用戶的訪問量還不足以帶來收益。更糟的是,用戶流失率高於預期。因而你當即採起措施,尋找網站沒法知足用戶的具體需求。事實是,用戶但願網站響應及時、值得信賴,而這些,你的網站都沒法達到。mysql
好吧,在給開發團隊分配項目時,你沒有考慮到這些。那麼,如今該怎麼作呢?linux
「性能提高」出場的時候到了。爲了優化系統,你須要收集系統性能數據。對於一個龐雜的程序,人們很難準確預測性能問題的確切位置。而一旦發現性能瓶頸的所在,問題就迎刃而解了。sql
這裏有一些衡量和監控 Ruby on Rails 應用性能的法寶,其中的一些也可應用在其餘 Web 應用中。數據庫
1. Rails 性能測試 – BenchMarking瀏覽器
「不過早優化」和「採用基準測試」是性能優化的基本準則。基準測試是必須的,沒有基準測試,優化的效果就無從衡量,全部優化的第一步都應該是基準測試。Rails 從2.2開始內置了 Benchmarker 和 Profiler 工具,經過 Rails 性能測試,可以發現應用資源的存儲或速度瓶頸,而 BenchMarker 將有助於瞭解各項性能測試運行的速度有多快。ruby
2. Rails 性能測試 – Profiling性能優化
有人形容 Benchmarker 和 Profiler 是性能調優的左右手,Profiler 有助於瞭解性能測試的細節,提供緩慢或內存不足部分的深刻圖像。每一個測試用例在 Profiling 模式下運行一次,內置的 Profiler 實現得很簡單,在 ruby2.2 中只有150行代碼。服務器
3. Rails Logger網絡
Rails 內建了 Log 功能,或者更準確地說,Rails 暴露了 Logger 對象,該對象能夠在全部的 Rails 程序中使用。獲取性能信息最簡單的方式是分析 Rails Log,它可以提供運行每條請求花費的時間信息,細分花費在渲染和 SQL 中的時間信息。
4. Rails Analyzer
Rails 分析器包括一系列工具 [生產日誌分析器,運行剖析,Rails 分析工具, SQL 依賴記錄] 用來捕捉應用中最慢的地方,讓錯誤優化變得更有針對性。
5. Rails Footnote
這個工具能夠顯示應用的 footnotes,以便於調試,除此以外,它還能在編輯器裏直接打開文件的連接。
6. Query Reviewer
Query Reviewer 其實是對 mysql 的 explain 命令的封裝,是一個方便的用於測試數據庫查詢效率的插件。它可以生成一個包含全部 SELECT 查詢的解釋頁面,評估一個頁面的數據庫使用狀況,展現交互記錄。
7. Slim Scrooge
Slim Scrooge 是一個優化層,用於確保你的 Rails 應用只在須要的時候才從數據庫獲取內容,最大限度的下降網絡流量,減小 SQL 執行次數以及優化 Ruby 數據類型的轉換過程。
8. OneAPM
OneAPM for Ruby 可以深刻到全部 Ruby 應用內部完成應用性能管理和監控,包括代碼級別性能問題的可見性、性能瓶頸的快速識別與追溯、真實用戶體驗監控、服務器監控和端到端的應用性能管理。追溯性能瓶頸至:性能表現差的 SQL 語句、第三方 API、Web Services、Caching Layers、後臺任務等。
9. Firebug
聽說,對於網頁開發人員來講,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 官方博客。