前兩天公司雙十一做大促活動,半夜突然來了一大波流量,你在睡夢中就收到了一大波報警短信,仔細一看,說是服務器 CPU 使用率過高。你沒敢半點馬虎,揉了揉眼睛,帶上眼鏡,打開電腦,直接就登錄到了 Linux 生產服務器。
登錄成功之后,你發現服務器確實有些慢,就連輸個命令都比平時慢了一拍。簡單輸入 top 命令之后,根據參數看到系統的 CPU 使用率奇高無比,二話沒說,你趕緊按照 CPU 使用率排序找出使用率最高的那個進程。從排序結果可以確定,你昨天剛升級服務的 CPU 使用率居然高達 700%,根據直覺推斷,你覺得肯定是昨天升級的服務并發處理邏輯有問題。
但是這個應用的負載特別大,業務邏輯也比較復雜,你一時也不知道到底是哪塊邏輯出的問題。網絡有人說,可以使用 gdb 來調試應用程序,可是 gdb 會把進程中斷掉,直接影響線上的業務。也有人說可以使用 perf 工具來查,你照貓畫虎,發現只是一些看起來像是 Linux 內核中的函數占用來比較多的 CPU。查了半天,最終發現還是沒能弄明白到底是哪里出現的問題,留下的都是無奈和迷茫。
如果你對這樣的場景感同身受,那我覺得你還沒有成為一個「更上一層樓」的服務器端工程師。極客們常說,只有知道一件事物的原理,它才是有用的東西。事實上,作為一個后端工程師和 Linux 打交道是司空見慣的事情,在服務器上分析系統性能情況是每個后端程序員都無法避開的事。
你愿意束手無策等待幫助,還是游刃有余庖丁解牛?
有人說,這是運維的工作范疇,我對這話是不以為然的。一個優秀的程序員,不應該在這事上給自己設邊界,如果連這點事情都整不明白,那我確信,你肯定也搞不懂高并發、分布式等相關的知識,因為這些內容都是一脈相承的。
鑒于此,我們邀請了微軟 Azure 資深工程師倪朋飛開設了一門《Linux 性能優化實戰》,專欄+音頻形式,預計 50 講左右。
說到微軟,大家總以為和 Linux 是死敵,微軟工程師都用 C# 和 Window Server 等,其實根本不是。倪朋飛在微軟主要負責開源容器編排系統 Kubernetes 在 Azure 的落地實踐,Azure 上有大量的 Linux 云服務器。倪老師之前曾任職于盛大云和騰訊,十年來一直在云計算領域工作,主攻 IaaS 和容器技術,所以對 Linux 性能優化這套知識體系又深厚的沉淀和豐富的實踐經驗。
在工作期間,他嘗試了大量的 Linux 性能工具,努力攀登性能之巔,在不斷的實踐和總結后,倪老師終于知道如何把觀察到的性能問題跟系統原理關聯起來,特別是把系統從應用程序、庫函數、系統調用、再到內核和硬件等不同的層級貫穿起來。
為了讓讀者對性能有個全面的認識,倪朋飛精心繪制了一張思維導圖,里面涵蓋了大部分性能分析和優化的知識。(后臺回復 Linux 獲取)
Linux 性能和優化入門難,但進入這個領域后就會如魚得水,學習和實踐相互印證,根本停不下來。但如何入門呢?第一帶著問題學習,而不是先去啃那幾本厚厚的原理書籍,因為那樣很容易把自己的信心壓垮。第二就是從學習到輸出,也就是不斷實踐。
事實上,只要你了解基礎系統組件的原理和協作方式,掌握基本的性能指標和工具,熟悉實際工作中性能優化的常用技巧,就可以比較準確分析和優化大多數的性能問題了。在這個認知和基礎上,再反過來去閱讀那些經典的操作系統或者其它圖書,才會事半功倍。
-
工程師
+關注
關注
59文章
1571瀏覽量
68559
發布評論請先 登錄
相關推薦
評論