
你有個絕佳的商業(yè)創(chuàng)意,日復(fù)一日地將它完善豐滿起來。后來,你雇了一群天賦異稟的開發(fā)者、Web 設(shè)計(jì)師和用戶體驗(yàn)專家,他們用一種非常棒的框架——Ruby on Rails 幫你實(shí)現(xiàn)長久以來的夢想。
你的網(wǎng)站誕生了!但是,不幸的是,你沒有足夠的資金用于搭建完善的服務(wù)器,你只是將她部署在內(nèi)存有限的 linux 機(jī)器上。一個月的興奮期之后,你突然意識到,用戶的訪問量還不足以帶來收益。更糟的是,用戶流失率高于預(yù)期。于是你立即采取措施,尋找網(wǎng)站無法滿足用戶的具體需求。事實(shí)是,用戶希望網(wǎng)站響應(yīng)及時、值得信賴,而這些,你的網(wǎng)站都無法達(dá)到。
好吧,在給開發(fā)團(tuán)隊(duì)分配項(xiàng)目時,你沒有考慮到這些。那么,現(xiàn)在該怎么做呢?
「性能提升」出場的時候到了。為了優(yōu)化系統(tǒng),你需要收集系統(tǒng)性能數(shù)據(jù)。對于一個龐雜的程序,人們很難準(zhǔn)確預(yù)測性能問題的確切位置。而一旦發(fā)現(xiàn)性能瓶頸的所在,問題就迎刃而解了。
這里有一些衡量和監(jiān)控 Ruby on Rails 應(yīng)用性能的法寶,其中的一些也可應(yīng)用在其他 Web 應(yīng)用中。
1. Rails 性能測試 – BenchMarking

「不過早優(yōu)化」和「采用基準(zhǔn)測試」是性能優(yōu)化的基本準(zhǔn)則?;鶞?zhǔn)測試是必須的,沒有基準(zhǔn)測試,優(yōu)化的效果就無從衡量,所有優(yōu)化的第一步都應(yīng)該是基準(zhǔn)測試。Rails 從2.2開始內(nèi)置了 Benchmarker 和 Profiler 工具,通過 Rails 性能測試,能夠發(fā)現(xiàn)應(yīng)用資源的存儲或速度瓶頸,而 BenchMarker 將有助于了解各項(xiàng)性能測試運(yùn)行的速度有多快。
2. Rails 性能測試 – Profiling

有人形容 Benchmarker 和 Profiler 是性能調(diào)優(yōu)的左右手,Profiler 有助于了解性能測試的細(xì)節(jié),提供緩慢或內(nèi)存不足部分的深入圖像。每個測試用例在 Profiling 模式下運(yùn)行一次,內(nèi)置的 Profiler 實(shí)現(xiàn)得很簡單,在 ruby2.2 中只有150行代碼。
3. Rails Logger

Rails 內(nèi)建了 Log 功能,或者更準(zhǔn)確地說,Rails 暴露了 Logger 對象,該對象可以在所有的 Rails 程序中使用。獲取性能信息最簡單的方式是分析 Rails Log,它能夠提供運(yùn)行每條請求花費(fèi)的時間信息,細(xì)分花費(fèi)在渲染和 SQL 中的時間信息。
4. Rails Analyzer

Rails 分析器包括一系列工具 [生產(chǎn)日志分析器,運(yùn)行剖析,Rails 分析工具, SQL 依賴記錄] 用來捕捉應(yīng)用中最慢的地方,讓錯誤優(yōu)化變得更有針對性。
5. Rails Footnote

這個工具可以顯示應(yīng)用的 footnotes,以便于調(diào)試,除此之外,它還能在編輯器里直接打開文件的鏈接。
6. Query Reviewer

Query Reviewer 實(shí)際上是對 mysql 的 explain 命令的封裝,是一個方便的用于測試數(shù)據(jù)庫查詢效率的插件。它能夠生成一個包含所有 SELECT 查詢的解釋頁面,評估一個頁面的數(shù)據(jù)庫使用情況,展示交互記錄。
7. Slim Scrooge

Slim Scrooge 是一個優(yōu)化層,用于確保你的 Rails 應(yīng)用只在需要的時候才從數(shù)據(jù)庫獲取內(nèi)容,最大限度的降低網(wǎng)絡(luò)流量,減少 SQL 執(zhí)行次數(shù)以及優(yōu)化 Ruby 數(shù)據(jù)類型的轉(zhuǎn)換過程。
8. OneAPM

OneAPM for Ruby 能夠深入到所有 Ruby 應(yīng)用內(nèi)部完成應(yīng)用性能管理和監(jiān)控,包括代碼級別性能問題的可見性、性能瓶頸的快速識別與追溯、真實(shí)用戶體驗(yàn)監(jiān)控、服務(wù)器監(jiān)控和端到端的應(yīng)用性能管理。追溯性能瓶頸至:性能表現(xiàn)差的 SQL 語句、第三方 API、Web Services、Caching Layers、后臺任務(wù)等。
9. Firebug

據(jù)說,對于網(wǎng)頁開發(fā)人員來說,F(xiàn)irebug 是 Firefox 瀏覽器中最好的插件之一。用戶可以利用它除錯、編輯、刪改任何網(wǎng)站的 CSS、HTML、DOM、與 JavaScript 代碼。此外,F(xiàn)irebug也提供擴(kuò)展的框架,例如 Yahoo! 的網(wǎng)頁速度優(yōu)化建議工具 YSlow、FireCookie、FirePHP 等。除了一些非常優(yōu)秀的功能,它還可以用于監(jiān)控網(wǎng)絡(luò)性能。使用它可以看到每個文件的加載時間,根據(jù)類型區(qū)分文件,檢查 http headers。
隨著互聯(lián)網(wǎng)應(yīng)用大量涌現(xiàn),應(yīng)用性能的重要性也越來越被開發(fā)人員所重視。不及時改善性能會使用戶的一再流失。以上這些都是檢查 Rails 應(yīng)用性能不錯的方法,它們或多或少解決了很多開發(fā)者的燃眉之急,如果你還有更好的招數(shù),不妨切磋。
翻譯改編自原作者:Fuad Bin Omar, COO, Nascenia
原文鏈接 http://www.nascenia.com/10-ways-and-tools-to-measure-performance-of-your-rails-application/
本文系 OneAPM 工程師翻譯。OneAPM 是應(yīng)用性能管理領(lǐng)域的新興領(lǐng)軍企業(yè),能幫助企業(yè)用戶和開發(fā)者輕松實(shí)現(xiàn):緩慢的程序代碼和 SQL 語句的實(shí)時抓取。想閱讀更多技術(shù)文章,請?jiān)L問 OneAPM 官方博客。