《軟體效能測試分析與調優實踐之路》(第2版) 是清華大學出版社出版的一本圖書,作者為張永清,全書共分為9章,如下圖所示
圖書介紹:《軟體效能測試分析與調優實踐之路》(第2版)
1、為什麼需要效能測試與分析
1)、瞭解系統的各項效能指標,透過效能壓測來了解系統能承受多大的併發訪問量、系統的平均響應時間是多少、系統的TPS是多少等。
2)、發現系統中存在的效能問題,常見的效能問題如下:
- 系統中是否存在負載均衡不均的情況。負載均衡不均勻一般指的是在併發的情況下,每臺伺服器接收的併發壓力不均勻,從而導致部分伺服器因為壓力過大而出現效能急劇下降,以及部分伺服器因為併發過小而出現資源浪費的情況。
- 系統中是否存在記憶體洩漏問題。記憶體洩漏是指應用程式程式碼在每次執行完後,不會主動釋放記憶體資源而導致記憶體使用一直增加,最終會使伺服器實體記憶體全部耗光,程式執行逐漸變慢,最終因為無法申請到記憶體而退出執行。記憶體洩漏多數情況下是非常緩慢的增加,不容易被發現,一般需要透過高併發效能壓測才能暴露。
- 系統中是否存在連線洩漏問題。連線洩漏種類非常廣泛,可以是資料庫連線洩漏、HTTP連線洩漏或者其他的TCP/UDP連線洩漏等。除了系統實際情況需要建立長連線外,一般短連線都應該是用完就需要關閉和釋放。
- 系統中是否存線上程安全問題。執行緒安全問題是在高併發訪問的多執行緒處理系統中經常會出現的問題,如果系統中存線上程安全問題,就會出現多個執行緒先後更改資料,造成所得到的資料全部是髒資料,有時候甚至會造成巨大的經濟損失。
- 系統中是否存在死鎖問題。死鎖問題也是多執行緒系統中經常會遇到的一個經典問題,一般常見的有系統死鎖、資料庫死鎖等。
- 系統中是否存在網路架構或者應用架構擴充套件性問題。擴充套件性問題一般是指在效能指標無法滿足預期的情況下,透過橫向或者縱向擴充套件硬體資源後,系統效能指標無法按照一定的線性規律進行快速遞增。
- 發現系統的效能瓶頸在何處。效能瓶頸一般是指因為某些因素而造成系統的效能無法持續上升。
3)解決效能壓測中存在的問題和效能瓶頸,透過不斷的效能調優,使得系統可以滿足預期的效能指標。
2、效能分析與調優實踐(流程)
《軟體效能測試分析與調優實踐之路》(第2版) 一書中總結如下:
3、效能分析與調優實踐(調優模型)
《軟體效能測試分析與調優實踐之路》(第2版) 一書中總結如下:
4、效能分析與調優實踐(分層分析)
下圖展示了《軟體效能測試分析與調優實踐之路》(第2版) 一書中如何從上到下或者從下到上來分層分析效能問題
5、效能分析與調優實踐(推理論證)
下圖展示瞭如何透過推理論證的方式來分析效能問題
6、常見的效能調優方式:
1)、效能分析與調優實踐(快取調優)
《軟體效能測試分析與調優實踐之路》(第2版) 一書中詳細論證瞭如何來解決如下快取中面臨的問題:
- (1)如何讓快取的命中率更高?
- (2)如何注意防止快取穿透?
- (3)如何控制好快取的失效時間和失效策略?
- (4)如何做好快取的監控分析?
- (5)如何防止快取雪崩?
2)、效能分析與調優實踐(同步轉非同步)
3)、效能分析與調優實踐(削峰填谷)
4)、效能分析與調優實踐(拆分)
5)、效能分析與調優實踐(任務分解與平行計算)
6)、效能分析與調優實踐(索引與分庫分表)
- 按照冷熱資料分離的方式:一般將使用頻率較高的資料稱為熱資料,查詢頻率較低或者幾乎不被查詢的資料稱為冷資料。冷熱資料分離後,熱資料單獨儲存,這樣資料量就會下降下來,查詢的效能自然也就提升了,而且還可以更方便地單獨針對熱資料進行I/O效能調優。
- 按照時間維度的方式:比如可以按照實時資料和歷史資料分庫分表,也可以按照年份、月份等時間區間進行分庫分表,目的是儘可能地減少每個庫表中的資料量。
- 按照一定的演算法計算的方式:此種方式一般適用於資料都是熱資料的情況,比如資料無法做冷熱分離,所有的資料都經常被查詢到,而且資料量又非常大。此時就可以根據資料中的某個欄位執行演算法(注意:這個欄位一般是資料查詢時的檢索條件欄位),使得資料插入後能均勻地落到不同的分表中去(由演算法決定每條資料是進入哪個分表),查詢時再根據查詢條件欄位執行同樣的演算法,就可以快速定位到是需要到哪個分表中去進行資料查詢。