Linux性能優(yōu)化實戰(zhàn)

你是否也曾跟我一樣,看了很多書抚恒、學(xué)了很多 Linux 性能工具咱台,但在面對 Linux 性能問題時,還是束手無策俭驮?實際上回溺,性能分析和優(yōu)化始終是大多數(shù)軟件工程師的一個痛點春贸。但是,面對難題遗遵,我們真的就無解了嗎萍恕?

固然,性能問題的復(fù)雜性增加了學(xué)習(xí)難度车要,但這并不能成為我們進階路上的“攔路虎”允粤。在我看來,大多數(shù)人對性能問題“投降”翼岁,原因可能只有兩個类垫。

一個是你沒找到有效的方法學(xué)原理,一聽到“系統(tǒng)”琅坡、“底層”這些詞就發(fā)怵悉患,覺得東西太難自己一定學(xué)不會,自然也就無法深入學(xué)下去榆俺,從而不能建立起性能的全局觀售躁。

再一個就是你看到性能問題的根源太復(fù)雜,既不懂怎么去分析谴仙,也不能抽絲剝繭找到瓶頸迂求。

你可能會想,反正程序出了問題晃跺,上網(wǎng)查就是了揩局,用別人的方法,囫圇吞棗地多試幾次掀虎,有可能就解決了凌盯。于是,你懶得深究這些方法為啥有效烹玉,更不知道為什么驰怎,很多方法在別人的環(huán)境有效,到你這兒就不行了二打。

所以县忌,相同的錯誤重復(fù)在犯,相同的狀況也是重復(fù)出現(xiàn)继效。

其實症杏,性能問題并沒有你想像得那么難,只要你理解了應(yīng)用程序和系統(tǒng)的少數(shù)幾個基本原理瑞信,再進行大量的實戰(zhàn)練習(xí)厉颤,建立起整體性能的全局觀,大多數(shù)性能問題的優(yōu)化就會水到渠成凡简。

我見過很多工程師逼友,在分析應(yīng)用程序所使用的第三方組件的性能時精肃,并不熟悉這些組件所用的編程語言,卻依然可以分析出線上問題的根源帜乞,并能通過一些方法進行優(yōu)化司抱,比如修改應(yīng)用程序?qū)λ鼈兊恼{(diào)用邏輯,或者調(diào)整組件的配置選項等挖函。

還是那句話状植,你不需要了解每個組件的所有實現(xiàn)細節(jié),只要能理解它們最基本的工作原理和協(xié)作方式怨喘,你也可以做到津畸。

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

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

當(dāng)看到性能指標(biāo)時,你會首先想到什么呢梳庆?我相信“高并發(fā)”和“響應(yīng)快”一定是最先出現(xiàn)在你腦海里的兩個詞暖途,而它們也正對應(yīng)著性能優(yōu)化的兩個核心指標(biāo)——“吞吐”和“延時”。這兩個指標(biāo)是應(yīng)用負載的視角來考察性能膏执,直接影響了產(chǎn)品終端的用戶體驗驻售。跟它們對應(yīng)的,是系統(tǒng)資源的視角出發(fā)的指標(biāo)更米,比如資源使用率欺栗、飽和度等。

我們知道征峦,隨著應(yīng)用負載的增加迟几,系統(tǒng)資源的使用也會升高,甚至達到極限栏笆。性能問題的本質(zhì)类腮,就是系統(tǒng)資源已經(jīng)達到瓶頸,但請求的處理卻還不夠快蛉加,無法支撐更多的請求蚜枢。

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

選擇指標(biāo)評估應(yīng)用程序和系統(tǒng)的性能贺辰;

為應(yīng)用程序和系統(tǒng)設(shè)置性能目標(biāo)户盯;

進行性能基準測試嵌施;

性能分析定位瓶頸;

優(yōu)化系統(tǒng)和應(yīng)用程序莽鸭;

性能監(jiān)控和告警吗伤。

了解了這些性能相關(guān)的基本指標(biāo)和核心步驟后,該怎么學(xué)呢硫眨?接下來足淆,我來說說要學(xué)好 Linux 性能優(yōu)化的幾個重要問題。

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

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

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

了解 Linux 常用命令的使用方法棚品;

知道怎么安裝和管理軟件包靠欢;

知道怎么通過編程語言開發(fā)應(yīng)用程序等。

這樣铜跑,在我講性能時门怪,你就更容易理解性能背后的原理,特別是在結(jié)合專欄里的案例實踐后锅纺,對性能分析能有更直觀的體會掷空。

這個專欄不會像教科書那樣,詳細教你操作系統(tǒng)伞广、算法原理拣帽、網(wǎng)絡(luò)協(xié)議乃至各種編程語言的全部細節(jié),但一些重要的系統(tǒng)原理還是必不可少的嚼锄。我還會用實際案例一步步教你减拭,貫穿從應(yīng)用程序到操作系統(tǒng)的各個組件。

學(xué)習(xí)的重點是什么区丑?

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

理解最基本的幾個系統(tǒng)知識原理可霎;

掌握必要的性能工具;

通過實際的場景演練宴杀,貫穿不同的組件癣朗。

這三點,就是我們學(xué)習(xí)的重中之重旺罢。我會在專欄的每篇文章中旷余,針對不同場景绢记,把這三個方面給你講清楚,你也一定要花時間和心思來消化它們正卧。

其實說到性能工具蠢熄,就不得不提性能領(lǐng)域的大師布倫丹·格雷格(Brendan Gregg)。他不僅是動態(tài)追蹤工具 DTrace 的作者炉旷,還開發(fā)了許許多多的性能工具签孔。我相信你一定見過他所描繪的 Linux 性能工具圖譜:


這個圖是 Linux 性能分析最重要的參考資料之一,它告訴你窘行,在 Linux 不同子系統(tǒng)出現(xiàn)性能問題后饥追,應(yīng)該用什么樣的工具來觀測和分析。

比如抽高,當(dāng)遇到 I/O 性能問題時判耕,可以參考圖片最下方的 I/O 子系統(tǒng),使用 iostat翘骂、iotop壁熄、blktrace 等工具分析磁盤 I/O 的瓶頸。你可以把這個圖保存下來碳竟,在需要的時候參考查詢草丧。

另外,我還要特別強調(diào)一點莹桅,就是性能工具的選用昌执。有句話是這么說的,一個正確的選擇勝過千百次的努力诈泼。雖然夸張了些懂拾,但是選用合適的性能工具,確實可以大大簡化整個性能優(yōu)化過程铐达。在什么場景選用什么樣的工具岖赋、以及怎么學(xué)會選擇合適工具,都是我想教給你的東西瓮孙。

但是切記唐断,千萬不要把性能工具當(dāng)成學(xué)習(xí)的全部。工具只是解決問題的手段杭抠,關(guān)鍵在于你的用法脸甘。只有真正理解了它們背后的原理,并且結(jié)合具體場景偏灿,融會貫通系統(tǒng)的不同組件丹诀,你才能真正掌握它們。

最后,為了讓你對性能有個全面的認識忿墅,我畫了一張思維導(dǎo)圖扁藕,里面涵蓋了大部分性能分析和優(yōu)化都會包含的知識,專欄中也基本都會講到疚脐。你可以保存或者打印下來,每學(xué)會一部分就標(biāo)記出來邢疙,記錄并把握自己的學(xué)習(xí)進度棍弄。

鏈接:https://pan.baidu.com/s/1v5gm7n0L7TGyejCmQrMh2g提取碼:x2p5

免費分享,但是X度限制嚴重疟游,如若鏈接失效點擊鏈接或搜索加群 群號936682608呼畸。

怎么學(xué)更高效?

前面我給你講了 Linux 性能優(yōu)化的學(xué)習(xí)重點颁虐,接下來我再跟你分享一下蛮原,我的幾個學(xué)習(xí)技巧。掌握這些技巧另绩,可以讓你學(xué)得更輕松儒陨。

技巧一:雖然系統(tǒng)的原理很重要,但在剛開始一定不要試圖抓住所有的實現(xiàn)細節(jié)笋籽。

深陷到系統(tǒng)實現(xiàn)的內(nèi)部蹦漠,可能會讓你丟掉學(xué)習(xí)的重點,而且繁雜的實現(xiàn)邏輯车海,很可能會打退你學(xué)習(xí)的積極性笛园。所以,我個人觀點是一定要適度侍芝。

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

有哪些指標(biāo)可以衡量性能棵红?

使用什么樣的性能工具來觀察指標(biāo)?

導(dǎo)致這些指標(biāo)變化的因素等留量。

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

只有通過在機器上練習(xí)楼熄,把我講的知識和案例自己過一遍忆绰,這些東西才能轉(zhuǎn)化成你的。我精心設(shè)計這些案例可岂,正是為了讓你有更好的學(xué)習(xí)理解和操作體驗错敢。

所以我強烈推薦你去實際運行、分析這些案例,或者用學(xué)到的知識去分析你自己的系統(tǒng)稚茅,這樣你會有更直觀的感受纸淮,獲得更好的學(xué)習(xí)效果。

技巧三:勤思考亚享,多反思咽块,善總結(jié),多問為什么欺税。

想真正學(xué)懂一門知識侈沪,最好的方法就是問問題。當(dāng)你能提出好的問題時晚凿,就說明你已經(jīng)深入了解了它亭罪。

你可以隨時在留言區(qū)給我留言,寫下自己的疑問歼秽、思考和總結(jié)应役,和我還有其他的學(xué)習(xí)者一起討論切磋。你也可以寫下自己經(jīng)歷過的性能問題燥筷,記錄你的分析步驟和優(yōu)化思路箩祥,我們一起互動探討。學(xué)習(xí)之前荆责,你的準備作為一個包含大量案例實踐的課程滥比,我會在每篇文章中,使用一到兩臺

Ubuntu 18.04 虛擬機做院,作為案例運行和分析的環(huán)境盲泛。如果你只是單純聽音頻的講解,卻從不動手實踐键耕,學(xué)習(xí)的效果一定會大打折扣寺滚。

所以,你是不是可以準備好一臺 Linux 機器屈雄,用于課程案例的實踐呢村视?任意的虛擬機或物理機都可以,并不局限于 Ubuntu 系統(tǒng)酒奶。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蚁孔,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子惋嚎,更是在濱河造成了極大的恐慌杠氢,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件另伍,死亡現(xiàn)場離奇詭異鼻百,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進店門温艇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來因悲,“玉大人,你說我怎么就攤上這事勺爱』瘟眨” “怎么了?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵琐鲁,是天一觀的道長蝎土。 經(jīng)常有香客問我,道長绣否,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任挡毅,我火速辦了婚禮蒜撮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘跪呈。我一直安慰自己段磨,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布耗绿。 她就那樣靜靜地躺著苹支,像睡著了一般。 火紅的嫁衣襯著肌膚如雪误阻。 梳的紋絲不亂的頭發(fā)上债蜜,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天,我揣著相機與錄音究反,去河邊找鬼寻定。 笑死,一個胖子當(dāng)著我的面吹牛精耐,可吹牛的內(nèi)容都是我干的狼速。 我是一名探鬼主播,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼卦停,長吁一口氣:“原來是場噩夢啊……” “哼向胡!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起惊完,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤僵芹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后专执,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體淮捆,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了攀痊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片桐腌。...
    茶點故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖苟径,靈堂內(nèi)的尸體忽然破棺而出案站,到底是詐尸還是另有隱情,我是刑警寧澤棘街,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布蟆盐,位于F島的核電站,受9級特大地震影響遭殉,放射性物質(zhì)發(fā)生泄漏石挂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一险污、第九天 我趴在偏房一處隱蔽的房頂上張望痹愚。 院中可真熱鬧,春花似錦蛔糯、人聲如沸拯腮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽动壤。三九已至,卻和暖如春淮逻,著一層夾襖步出監(jiān)牢的瞬間琼懊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工弦蹂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留肩碟,地道東北人。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓凸椿,卻偏偏與公主長得像削祈,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子脑漫,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,630評論 2 359

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