《性能之巔》學習心得

前幾天陸陸續續的寫了四五篇性能相關的文章,有不少同學讓推薦性能測試的書籍,今天就推薦一本我認爲非常棒的書《性能之巔》。

前段時間再次花了幾天時間快速的閱讀下《性能之巔》,感覺受益匪淺,作者本身有很強的邏輯思維能力和實戰經驗;該書不論對於初學者還是有一定工作經驗的工程師來說,都值得一看。

1.本書的基本邏輯架構

本書主要主要從性能問題產生的應用程序、cpu、內存、文件系統、磁盤、網絡六個知識領域,按照普通人解決問題的思維方,2W1H("是什麼?">"爲什麼?">"怎麼做? ")的角度來分析問題解決問題。使得本書的閱讀變得有很強的邏輯性。

書中對於基本概念介紹相對比較多,統一概念,便於閱讀者更好的閱讀本身,這一點很贊。

2. 基礎知識和分析方法(一到三章)

前三章主要講解系統基礎知識和一些分析方法

街燈訛方法

    在熟悉的工具或流程中試錯,比較盲目

Ad Hoc覈對清單法

    保證所有人知道如何檢查最糟糕的問題,覆蓋全面,但必須保持清單及時更新

診斷循環

    假設–儀器檢驗–數據–假設

USE方法

    本書重點方法,對於所有資源,查看它的使用率、飽和度、錯誤

當然方法還有很多,限於篇幅在此只說明其中幾種方法。

3.觀測工具(第四章)

本書第四章主要講解觀測工具,性能觀測工具可以按照系統級別和進程級別來分類,多數的工具要麼基於計數器要麼基於跟蹤:

計數器

內核維護了各種統計數據,稱爲計數器,用於對事件計數。通常計數器實現爲無符號的整型數,發生事件時遞增。

系統級別的計數器有:

vmstat: 虛擬內存和物理內存的統計,系統級別

mpstat: 每個 CPU 的使用情況

iostat: 每個磁盤 I/O 的使用情況,由塊設備接口報告

netstat: 網絡接口的統計,TCP/IP 棧的統計,以及每個連接的一些統計信息

sar: 各種各樣的統計,能歸檔歷史數據

進程級別:

ps: 進程狀態,顯示進程的各種統計信息,包括內存和 CPU 的使用

top: 按一個統計數據排序,顯示排名高的進程

pmap: 將進程的內存段和使用統計一起列出

一般來說,上述這些工具是從 /proc 文件系統裏讀取統計信息的

跟蹤

跟蹤收集每一個事件的數據以供分析。跟蹤框架一般默認是不啓用的,因爲跟蹤捕獲數據會有 CPU 開銷,另外還需要不小的存儲空間來存放數據。

系統級別:

tcpdump: 網絡包跟蹤(libpcap lib)

blktrace: 塊 I/O 跟蹤

DTrace: 跟蹤內核的內部活動和所有資源的使用情況,支持靜態和動態的跟蹤

SystemTap: 同上

perf: Linux 性能事件,跟蹤靜態和動態的指針

進程級別:

strace: 系統調用跟蹤

gbd: 源碼級別的調試器

4.應用系統

本書的第五章主要講解應用相關知識,性能調整離工作所執行的地方越近越好:最好在應用程序裏,包括 Web 服務器、應用服務器、負載均衡器、文件服務器,等等。

設立性能目標能爲你的性能分析工作指明方向,並幫助你選擇要做的事情。沒有清晰的目標,性能分析容易淪爲隨機的『釣魚探險』。

常見目標:

延時

吞吐量

資源使用率

應用程序性能技術:選擇 I/O 尺寸、緩存、緩衝區、輪訓(epoll)、併發和並行、非阻塞 I/O、處理器綁定

編程語言相關:編譯語言使用編譯器優化、解釋語言一般不是首選、虛擬機、垃圾回收

5.資源監控(六到十章)

本身六到十章主要講了cpu、內存、文件系統、磁盤、網絡等知識,原理的知識講的相對較少,但作爲一個知識索引對閱讀幫助非常大,需要了解更深層的東西需要參考其他書籍。

CPU分析工具

內存分析工具

文件系統分析工具

磁盤分析工具

網絡分析工具

其中十二十三章來說,作爲性能測試人員來說,還是值得仔細研讀,其中解決問題的方式值得我們思考和借鑑。

2019年連續五十九天修心 土司於北京

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章