如何學(xué)習(xí)Linux性能優(yōu)化?

image.png

你是否也曾跟我一樣骏庸,看了很多書(shū)毛甲、學(xué)了很多 Linux 性能工具,但在面對(duì) Linux 性能問(wèn)題時(shí)具被,還是束手無(wú)策玻募?實(shí)際上,性能分析和優(yōu)化始終是大多數(shù)軟件工程師的一個(gè)痛點(diǎn)一姿。但是七咧,面對(duì)難題,我們真的就無(wú)解了嗎叮叹?

固然艾栋,性能問(wèn)題的復(fù)雜性增加了學(xué)習(xí)難度,但這并不能成為我們進(jìn)階路上的“攔路虎”蛉顽。在我看來(lái)蝗砾,大多數(shù)人對(duì)性能問(wèn)題“投降”,原因可能只有兩個(gè)。

一個(gè)是你沒(méi)找到有效的方法學(xué)原理遥诉,一聽(tīng)到“系統(tǒng)”拇泣、“底層”這些詞就發(fā)怵,覺(jué)得東西太難矮锈,自己一定學(xué)不會(huì),自然也就無(wú)法深入學(xué)下去睁蕾,從而不能建立起性能的全局觀苞笨。

再一個(gè)就是,你看到性能問(wèn)題的根源太復(fù)雜子眶,既不懂怎么去分析瀑凝,也不能抽絲剝繭找到瓶頸。

你可能會(huì)想臭杰,反正程序出了問(wèn)題粤咪,上網(wǎng)查就是了,用別人的方法渴杆,囫圇吞棗地多試幾次寥枝,有可能就解決了。于是磁奖,你懶得深究這些方法為啥有效囊拜,更不知道為什么,很多方法在別人的環(huán)境有效比搭,到你這兒就不行了冠跷。

所以,相同的錯(cuò)誤重復(fù)在犯身诺,相同的狀況也是重復(fù)出現(xiàn)蜜托。

其實(shí),性能問(wèn)題并沒(méi)有你想像得那么難霉赡,只要你理解了應(yīng)用程序和系統(tǒng)的少數(shù)幾個(gè)基本原理橄务,再進(jìn)行大量的實(shí)戰(zhàn)練習(xí),建立起整體性能的全局觀同廉,大多數(shù)性能問(wèn)題的優(yōu)化就會(huì)水到渠成仪糖。

我見(jiàn)過(guò)很多工程師,在分析應(yīng)用程序所使用的第三方組件的性能時(shí)迫肖,并不熟悉這些組件所用的編程語(yǔ)言锅劝,卻依然可以分析出線上問(wèn)題的根源,并能通過(guò)一些方法進(jìn)行優(yōu)化蟆湖,比如修改應(yīng)用程序?qū)λ鼈兊恼{(diào)用邏輯故爵,或者調(diào)整組件的配置選項(xiàng)等。

還是那句話,你不需要了解每個(gè)組件的所有實(shí)現(xiàn)細(xì)節(jié)诬垂,只要能理解它們最基本的工作原理和協(xié)作方式劲室,你也可以做到。

性能指標(biāo)是什么结窘?

學(xué)習(xí)性能優(yōu)化的第一步很洋,一定是了解“性能指標(biāo)”這個(gè)概念。

當(dāng)看到性能指標(biāo)時(shí)隧枫,你會(huì)首先想到什么呢喉磁?我相信“高并發(fā)”和“響應(yīng)快”一定是最先出現(xiàn)在你腦海里的兩個(gè)詞,而它們也正對(duì)應(yīng)著性能優(yōu)化的兩個(gè)核心指標(biāo)——“吞吐”和“延時(shí)”官脓。這兩個(gè)指標(biāo)是從應(yīng)用負(fù)載的視角來(lái)考察性能协怒,直接影響了產(chǎn)品終端的用戶體驗(yàn)。跟它們對(duì)應(yīng)的卑笨,是從系統(tǒng)資源的視角出發(fā)的指標(biāo)孕暇,比如資源使用率、飽和度等赤兴。

我們知道妖滔,隨著應(yīng)用負(fù)載的增加,系統(tǒng)資源的使用也會(huì)升高搀缠,甚至達(dá)到極限铛楣。而性能問(wèn)題的本質(zhì),就是系統(tǒng)資源已經(jīng)達(dá)到瓶頸艺普,但請(qǐng)求的處理卻還不夠快簸州,無(wú)法支撐更多的請(qǐng)求。

性能分析歧譬,其實(shí)就是找出應(yīng)用或系統(tǒng)的瓶頸岸浑,并設(shè)法去避免或者緩解它們,從而更高效地利用系統(tǒng)資源處理更多的請(qǐng)求瑰步。這包含了一系列的步驟矢洲,比如下面這六個(gè)步驟。

了解了這些性能相關(guān)的基本指標(biāo)和核心步驟后缩焦,該怎么學(xué)呢读虏?接下來(lái),我來(lái)說(shuō)說(shuō)要學(xué)好 Linux 性能優(yōu)化的幾個(gè)重要問(wèn)題袁滥。

學(xué)這個(gè)專欄需要什么基礎(chǔ)

首先你要明白盖桥,我們這個(gè)專欄的核心是性能的分析和優(yōu)化,而不是最基本的 Linux 操作系統(tǒng)的使用方法题翻。

因而揩徊,我希望你最好用過(guò) Ubuntu 或其他 Linux 操作系統(tǒng),然后要具備一些編程基礎(chǔ),比如:

這樣塑荒,在我講性能時(shí)熄赡,你就更容易理解性能背后的原理,特別是在結(jié)合專欄里的案例實(shí)踐后齿税,對(duì)性能分析能有更直觀的體會(huì)彼硫。

這個(gè)專欄不會(huì)像教科書(shū)那樣,詳細(xì)教你操作系統(tǒng)凌箕、算法原理乌助、網(wǎng)絡(luò)協(xié)議乃至各種編程語(yǔ)言的全部細(xì)節(jié),但一些重要的系統(tǒng)原理還是必不可少的陌知。我還會(huì)用實(shí)際案例一步步教你,貫穿從應(yīng)用程序到操作系統(tǒng)的各個(gè)組件掖肋。

學(xué)習(xí)的重點(diǎn)是什么仆葡?

想要學(xué)習(xí)好性能分析和優(yōu)化,建立整體系統(tǒng)性能的全局觀是最核心的話題志笼。因而沿盅,

這三點(diǎn),就是我們學(xué)習(xí)的重中之重纫溃。我會(huì)在專欄的每篇文章中腰涧,針對(duì)不同場(chǎng)景,把這三個(gè)方面給你講清楚紊浩,你也一定要花時(shí)間和心思來(lái)消化它們窖铡。

其實(shí)說(shuō)到性能工具,就不得不提性能領(lǐng)域的大師布倫丹·格雷格(Brendan Gregg)坊谁。他不僅是動(dòng)態(tài)追蹤工具 DTrace 的作者费彼,還開(kāi)發(fā)了許許多多的性能工具。我相信你一定見(jiàn)過(guò)他所描繪的 Linux 性能工具圖譜:

(圖片來(lái)自)

這個(gè)圖是 Linux 性能分析最重要的參考資料之一口芍,它告訴你箍铲,在 Linux 不同子系統(tǒng)出現(xiàn)性能問(wèn)題后,應(yīng)該用什么樣的工具來(lái)觀測(cè)和分析鬓椭。

比如,當(dāng)遇到 I/O 性能問(wèn)題時(shí),可以參考圖片最下方的 I/O 子系統(tǒng)厦滤,使用 iostat箱舞、iotop、blktrace 等工具分析磁盤 I/O 的瓶頸氧映。你可以把這個(gè)圖保存下來(lái)春畔,在需要的時(shí)候參考查詢。

另外,我還要特別強(qiáng)調(diào)一點(diǎn)律姨,就是性能工具的選用振峻。有句話是這么說(shuō)的,一個(gè)正確的選擇勝過(guò)千百次的努力择份。雖然夸張了些扣孟,但是選用合適的性能工具,確實(shí)可以大大簡(jiǎn)化整個(gè)性能優(yōu)化過(guò)程荣赶。在什么場(chǎng)景選用什么樣的工具凤价、以及怎么學(xué)會(huì)選擇合適工具,都是我想教給你的東西拔创。

但是切記利诺,千萬(wàn)不要把性能工具當(dāng)成學(xué)習(xí)的全部。工具只是解決問(wèn)題的手段剩燥,關(guān)鍵在于你的用法慢逾。只有真正理解了它們背后的原理,并且結(jié)合具體場(chǎng)景灭红,融會(huì)貫通系統(tǒng)的不同組件侣滩,你才能真正掌握它們。

最后变擒,為了讓你對(duì)性能有個(gè)全面的認(rèn)識(shí)君珠,我畫了一張思維導(dǎo)圖,里面涵蓋了大部分性能分析和優(yōu)化都會(huì)包含的知識(shí)娇斑,專欄中也基本都會(huì)講到策添。你可以保存或者打印下來(lái),每學(xué)會(huì)一部分就標(biāo)記出來(lái)悠菜,記錄并把握自己的學(xué)習(xí)進(jìn)度舰攒。

怎么學(xué)更高效?

前面我給你講了 Linux 性能優(yōu)化的學(xué)習(xí)重點(diǎn)悔醋,接下來(lái)我再跟你分享一下摩窃,我的幾個(gè)學(xué)習(xí)技巧。掌握這些技巧芬骄,可以讓你學(xué)得更輕松猾愿。

技巧一:雖然系統(tǒng)的原理很重要,但在剛開(kāi)始一定不要試圖抓住所有的實(shí)現(xiàn)細(xì)節(jié)账阻。

深陷到系統(tǒng)實(shí)現(xiàn)的內(nèi)部蒂秘,可能會(huì)讓你丟掉學(xué)習(xí)的重點(diǎn),而且繁雜的實(shí)現(xiàn)邏輯淘太,很可能會(huì)打退你學(xué)習(xí)的積極性姻僧。所以规丽,我個(gè)人觀點(diǎn)是一定要適度。

你可以先學(xué)會(huì)我給你講的這些系統(tǒng)工作原理撇贺,但不要去深究 Linux 內(nèi)核是如何做到的赌莺,而是要把你的重點(diǎn)放到如何觀察和運(yùn)用這些原理上,比如:

技巧二:邊學(xué)邊實(shí)踐松嘶,通過(guò)大量的案例演習(xí)掌握 Linux 性能的分析和優(yōu)化艘狭。

只有通過(guò)在機(jī)器上練習(xí),把我講的知識(shí)和案例自己過(guò)一遍翠订,這些東西才能轉(zhuǎn)化成你的巢音。我精心設(shè)計(jì)這些案例,正是為了讓你有更好的學(xué)習(xí)理解和操作體驗(yàn)尽超。

所以我強(qiáng)烈推薦你去實(shí)際運(yùn)行官撼、分析這些案例,或者用學(xué)到的知識(shí)去分析你自己的系統(tǒng)似谁,這樣你會(huì)有更直觀的感受歧寺,獲得更好的學(xué)習(xí)效果。

技巧三:勤思考棘脐,多反思,善總結(jié)龙致,多問(wèn)為什么蛀缝。

想真正學(xué)懂一門知識(shí),最好的方法就是問(wèn)問(wèn)題目代。當(dāng)你能提出好的問(wèn)題時(shí)屈梁,就說(shuō)明你已經(jīng)深入了解了它。

你可以隨時(shí)在留言區(qū)給我留言榛了,寫下自己的疑問(wèn)在讶、思考和總結(jié),和我還有其他的學(xué)習(xí)者一起討論切磋霜大。你也可以寫下自己經(jīng)歷過(guò)的性能問(wèn)題构哺,記錄你的分析步驟和優(yōu)化思路,我們一起互動(dòng)探討战坤。

學(xué)習(xí)之前曙强,你的準(zhǔn)備

作為一個(gè)包含大量案例實(shí)踐的課程,我會(huì)在每篇文章中途茫,使用一到兩臺(tái) Ubuntu 18.04 虛擬機(jī)碟嘴,作為案例運(yùn)行和分析的環(huán)境。如果你只是單純聽(tīng)音頻的講解囊卜,卻從不動(dòng)手實(shí)踐娜扇,學(xué)習(xí)的效果一定會(huì)大打折扣错沃。

所以,你是不是可以準(zhǔn)備好一臺(tái) Linux 機(jī)器雀瓢,用于課程案例的實(shí)踐呢枢析?任意的虛擬機(jī)或物理機(jī)都可以,并不局限于 Ubuntu 系統(tǒng)致燥。
廣告.jpg
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末登疗,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子嫌蚤,更是在濱河造成了極大的恐慌辐益,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,657評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件脱吱,死亡現(xiàn)場(chǎng)離奇詭異智政,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)箱蝠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,662評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門续捂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人宦搬,你說(shuō)我怎么就攤上這事牙瓢。” “怎么了间校?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,143評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵矾克,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我憔足,道長(zhǎng)胁附,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,732評(píng)論 1 284
  • 正文 為了忘掉前任滓彰,我火速辦了婚禮控妻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘揭绑。我一直安慰自己弓候,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,837評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布他匪。 她就那樣靜靜地躺著弓叛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪诚纸。 梳的紋絲不亂的頭發(fā)上撰筷,一...
    開(kāi)封第一講書(shū)人閱讀 50,036評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音畦徘,去河邊找鬼毕籽。 笑死抬闯,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的关筒。 我是一名探鬼主播溶握,決...
    沈念sama閱讀 39,126評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蒸播!你這毒婦竟也來(lái)了睡榆?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,868評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤袍榆,失蹤者是張志新(化名)和其女友劉穎胀屿,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體包雀,經(jīng)...
    沈念sama閱讀 44,315評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡宿崭,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,641評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了才写。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片葡兑。...
    茶點(diǎn)故事閱讀 38,773評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖赞草,靈堂內(nèi)的尸體忽然破棺而出讹堤,到底是詐尸還是另有隱情,我是刑警寧澤厨疙,帶...
    沈念sama閱讀 34,470評(píng)論 4 333
  • 正文 年R本政府宣布蜕劝,位于F島的核電站,受9級(jí)特大地震影響轰异,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜暑始,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,126評(píng)論 3 317
  • 文/蒙蒙 一搭独、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧廊镜,春花似錦牙肝、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,859評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至雹姊,卻和暖如春股缸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背吱雏。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,095評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工敦姻, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瘾境,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,584評(píng)論 2 362
  • 正文 我出身青樓镰惦,卻偏偏與公主長(zhǎng)得像迷守,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子旺入,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,676評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容