(五)性能分析思路

一.性能測試分析的能力階梯視圖

在這裏插入圖片描述

二.性能分析思路大綱

  • 瓶頸的精準判斷
  • 線程遞增的策略
  • 性能衰減的過程
  • 響應時間的拆分
  • 構建分析決策樹
  • 場景的比對

1.瓶頸的精準判斷

  • 響應時間是用來判斷業務有多快的,而 TPS 纔是用來判斷容量有多大的。

  • TPS曲線

    • TPS衰減圖:
      在這裏插入圖片描述

      • 隨着用戶數的增加,響應時間也在緩慢增加。
      • TPS 前期一直都有增加,但是增加的幅度在變緩,直到變平。
    • TPS曲線可以告訴我們:

      • 有沒有瓶頸:其實準確說所有的系統都有性能瓶頸,只看我們在哪個量級在做性能測試了。
      • 瓶頸和壓力有沒有關係:TPS 隨着壓力的變化而變化,那就是有關係。不管壓力增不增加,TPS 都會出現曲線趨勢問題,那就是無關。
  • 響應時間

    • 響應時間圖
      在這裏插入圖片描述

    • 對應線程圖
      在這裏插入圖片描述

    • 對應TPS圖
      在這裏插入圖片描述

      • 通過上圖三個圖我們可以看出,到第40個線程時,TPS基本上達到上限,爲2500左右,響應時間隨着線程數的增加而增加了,系統的瓶頸也出現了。

2.線程遞增的策略

  • 對一個系統來說,如果僅在改變壓力策略(其他的條件比如環境、數據、軟硬件配置等都不變)的情況下,系統的最大 TPS 上限是固定的。
  • 對於場景中線程(有些工具中叫虛擬用戶)遞增的策略,我們要做到以下幾點:
    • 場景中的線程遞增一定是連續的,並且在遞增的過程中也是有梯度的。
    • 場景中的線程遞增一定要和 TPS 的遞增有比例關係,而不是突然達到最上限。
    • 對於秒殺類的場景,我們前期一定是做好了系統預熱的工作的,在預熱之後,線程突增產生的壓力,也是在可處理範圍的。這時,我們可以設計線程突增的場景來看系統瞬間的處理能力。如果不能模擬出秒殺的陡增,就是不合理的場景。

3.性能衰減的過程

  • 壓力產生結果圖
    在這裏插入圖片描述

  • 通過計算可以得到統計圖
    在這裏插入圖片描述

    • 通過對比知道, 當每線程每秒的請求數降到 55 左右的時候,TPS 就達到上限了,大概在 5000 左右,再接着往上增加線程已經沒有用了,響應時間開始往上增加了。這就是性能衰減的過程(在上圖中,在紅線前面,性能在上升的過程中有幾次抖動,這個抖動到後面變大了,也變頻繁了,如果這是必然出現的抖動,那也是配置問題。)。
    • 通過上述栗子可以得出: 只要每線程每秒的 TPS 開始變少,就意味着性能瓶頸已經出現了。但是瓶頸出現之後,並不是說服務器的處理能力(這裏我們用 TPS 來描述)會下降,應該說 TPS 仍然會上升,在性能不斷衰減的過程中,TPS 就會達到上限。

4.響應時間拆分

  • 響應時間通常是一個分析的起點, 在壓力工具上看到的響應時間,都是經過了後端的每一個系統的。那麼,當響應時間變長,我們就要知道,它在哪個階段時間變長了。
  • 比如架構如圖所示,拆分時間應該是比較清楚的:
    在這裏插入圖片描述

5.構建分析決策樹

  • 分析決策樹, 是對架構的梳理,是對系統的梳理,是對問題的梳理,是對查找證據鏈過程的梳理,是對分析思路的梳理。它起的是縱觀全局,高屋建瓴的指導作用。

  • 分析決策圖
    在這裏插入圖片描述

    • 從壓力工具中,只需要知道 TPS、響應時間和錯誤率三條曲線,就可以明確判斷瓶頸是否存在。再通過分段分層策略,結合監控平臺、日誌平臺,或者其他的實時分析平臺,知道架構中的哪個環節有問題,然後再根據更細化的架構圖一一拆解下去。
  • 數據庫分析決策樹,對 RDBMS 中的 MySQL,可以畫一個如下的決策樹
    在這裏插入圖片描述

  • 操作系統分析決策樹
    在這裏插入圖片描述

6.場景的對比

  • 當你覺得系統中哪個環節不行的時候, 又沒能力分析它,你可以直接做該環節的增加。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章