這些問題或者場景,你是否曾經遇到過?
- 流量高峯期,服務器CPU使用率過高報警,你登錄Linux上去top完之後,卻不知道怎麼進一步定位,到底是系統CPU資源太少,還是程序併發部分寫的有問題?
- 系統並沒有跑什麼吃內存的程序,但是敲完free命令之後,卻發現系統已經沒有什麼內存了,那到底是哪裏佔用了內存?爲什麼?
- 一大早就收到Zabbix告警,你發現某臺存放監控數據的數據庫主機CPU的I/O Wait較高,這個時候該怎麼辦?
作爲一個程序員,性能優化是無法避開的事情,不管是桌面應用還是web應用,不管是前端還是後端,不管是單點應用還是分佈式系統,並且性能優化也是軟件系統中最有挑戰的工作之一,更是每個工程師都需要掌握的核心技能。
但是在實際的工作中,很多情況下只能看到症狀,卻完全不知道該從哪兒下手去排查和解決它。
之前有讀者問過到,胖哥有沒有系統學習Linux性能優化的書籍推薦?
網上的資料和書籍可以擴充底層知識體系,從虛擬化的原理、到操作系統和網絡原理、再到Linux內核和硬件驅動程序等等。
但是Linux性能優化是個系統工程,除了基礎知識點之外,學習中還有兩點是比較重要的:
第一、要學習大量性能優化的思路和方法,嘗試大量的Linux性能工具。
第二、要不斷的實踐和總結。這樣你才能把觀察到的性能問題跟系統原理關聯起來,特別是把系統從應用程序、庫函數、系統調用、再到內核和硬件等不同的層級貫穿起來。
對於我們大多數人來說,最好的學習方式一定是帶着問題學習,而不是先去啃那幾本厚厚的原理書籍,這樣容易把自己的信心壓垮。我認爲,學習要會抓重點,只要你瞭解少數幾個系統組件的基本原理和協作方式,掌握基本的性能指標和工具,學習實際工作中性能優化的常用技巧,你就已經可以準確分析和優化大多數的性能問題了。
在這個認知和基礎上,再反過來去閱讀那些經典的操作系統或者其它圖書,你才能事半功倍。