九個衡量 Rails 應(yīng)用性能的小方法

alt
alt

你有個絕佳的商業(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

alt
alt

「不過早優(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

alt
alt

有人形容 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

alt
alt

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

4. Rails Analyzer

alt
alt

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

5. Rails Footnote

alt
alt

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

6. Query Reviewer

alt
alt

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

7. Slim Scrooge

alt
alt

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

alt
alt

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

alt
alt

據(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 官方博客

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容