鳥哥(惠新宸)
性能為什么很重要
鳥哥說:“應用性能最重要的不僅僅是執(zhí)行快的問題,它包含很多方面的問題,比如說服務器負載,吞吐都屬于性能范疇。”
鳥哥認為,在關注應用性能之前,應該先考慮應用的正確性、穩(wěn)定性和安全性,然后再考慮性能。我們都需要去想一個問題,我們關注的性能到底是什么?是速度還是投入產(chǎn)出比,是系統(tǒng)的優(yōu)化性還是代碼的正確性,確定方向以后再開始優(yōu)化。
而我們的系統(tǒng)到底有沒有問題?一個高性能的系統(tǒng)往往是最漂亮的系統(tǒng),一般來說,當你接手一個系統(tǒng)準備開始優(yōu)化時,憑經(jīng)驗來講,一個從誕生到目前為止從來沒有真正進行性能優(yōu)化的系統(tǒng),優(yōu)化后的提升率可以達到30%以上,30%是對于大小公司都是一個很可觀的數(shù)字。
永遠不要微優(yōu)化,永遠不要憑主觀臆測去優(yōu)化
鳥哥說:“性能優(yōu)化不應該是一個人或者一個團隊的事。”
鳥哥給我們舉了個很有趣的例子,一個師兄創(chuàng)業(yè)說他們以前系統(tǒng)是CTO一個人做的,這個CTO特別有技術情懷,怎么個技術情懷法?這個人后來辭職了,就再也找不到人接手這個系統(tǒng)。不僅是系統(tǒng),所有的系統(tǒng)周邊的事情,例如測試,上線,運維,開發(fā)習慣等等都需要成本的,這些都不該是某個人或者某個團隊自己的事。
當你確定系統(tǒng)需要性能優(yōu)化時,你需要一個標準來衡量優(yōu)化的過程,同時也需要定出優(yōu)化步驟,把性能優(yōu)化過程拆解成已周或月為單位的時間段,而不是干了大半年不知道結果如何,當然最重要的是我們需要確認我們正在進行的性能優(yōu)化會不會對原來的系統(tǒng)有影響。沒有人能確保自己的代碼絕對正確,所以永遠不要憑主觀臆測去優(yōu)化。
什么時候開始,什么時候結束
鳥哥說:“性能優(yōu)化應該從業(yè)務層面到管理層,再往下發(fā)展到不同層面,最上面的業(yè)務層優(yōu)化收益往往最大。”
我們做優(yōu)化最重要原因是要以最小代價獲得最大效益,比如說原來調(diào)用了7、8個API,優(yōu)化完以后發(fā)現(xiàn)可以合并運行,這就是最大的收益,我們一定從消耗最大的方向入手。
業(yè)務層面怎么優(yōu)化?必須對業(yè)務非常熟悉,安排一個獨立優(yōu)化部門并沒有太大的作用。參與優(yōu)化的人員每一個人都寫日志非常必要的,從系統(tǒng)環(huán)境開始入手做優(yōu)化,首先配置有沒有問題,再往下是模塊合適與否,最后拓展到不同層面上,這才是從上往下優(yōu)化過程,這個過程一直持續(xù)到你滿意為止。
建立一個“系統(tǒng)”去優(yōu)化你的系統(tǒng)
鳥哥說:“運維的核心是可視化,監(jiān)控非常重要,類似服務器監(jiān)控,性能監(jiān)控等。而運維監(jiān)控核心是把系統(tǒng)中存在的各種問題匯成一個非??梢?,非常易于去看的東西。”
整個性能優(yōu)化最核心地方是什么?要有一個監(jiān)控或者報告,告訴你哪里出了問題。系統(tǒng)優(yōu)化最大問題不是怎么去優(yōu)化,而在于你發(fā)現(xiàn)這個地方有問題。一個好的團隊需要構建一個能一覽全局的系統(tǒng)來監(jiān)測性能,第一時間得到的信息越多,排除問題可能性就越快。
然而這樣的系統(tǒng)是非常難做的,但是效果會非常明顯,如果你有這樣的系統(tǒng),你的應用一定會是高效。而聽云是國內(nèi)應用性能管理領域的佼佼者,推薦大家去使用。
鳥哥說“做應用性能優(yōu)化工作應該是很有意思,很有成就感的一件事”,鳥哥說“性能優(yōu)化不是一次性的事”,鳥哥說了很多很多,而每一次提及應用性能管理及優(yōu)化時,仿佛都有說不完的故事,然而時間不允許我們過多的駐足,關于性能優(yōu)化那些事兒,我們還是留到下一次大講堂上再說吧。
鳥哥演講課件下載:http://bbs.tingyun.com/forum.php?mod=viewthread&tid=62&extra=