性能測試中“並發度”的意義


  之前的文章中曾出現過“並發度”這個概念,這個詞不知道是不是我原創,它意在表達“並發”的可能性,是壓力的一種度量。一些同學可能還沒有理解這個概念的意義,下面我們看看它是怎么來……

  看過之前文章的同學應該知道,我將“並發”這個容易產生誤解的詞拆分成了“相對並發”和“絕對並發”。為什么這么做呢?那是因為“絕對並發”說的是同一時刻發生的事情,這通常是我們無法觀測和衡量的。而“相對並發”說的是一個時間段內發生的事情,這是很容易觀測到的。從某種程度上,也可以說“相對並發”是為了彌補我們無法有效評估“絕對並發”的壓力而出現的。

  但是有時候,性能測試工程師仍然需要回答“系統可以處理多少個並發請求”這類的問題,或者是需要測試一些絕對並發的極限場景。這類問題和測試場景是有意義的,但是在沒有“絕對並發”相關數據的情況下,我們如何處理?顯然胡亂拍板是不可以的,那么我們只有根據一些可觀測的數據進行合理的推測和估算,“並發度”就是這樣產生的。  

  假設我們已經分析得出,系統的使用壓力集中在2個小時內,在這個時間段內共有100個用戶訪問(活躍用戶),且壓力是平均分布的(否則就可以說壓力集中在更小的時間段內了),平均每個用戶使用系統的時間是30分鍾(活躍時間),那么我們可以畫出下面一張圖來表示服務端所承受的壓力。

  

  這是一張從服務端視角來看的交互圖。橫軸是時間,縱軸是訪問用戶,每一條橫線表示一個用戶與系統的交互過程,不同的用戶用不同顏色做了標識。在這張圖中,什么是並發度呢?我們選取時間軸上的一個點,延縱軸方向做一條平行線,這條線穿過的橫線的數量,就是並發度。

  

  並發度表示,在一個時間點上,可能與服務端進行交互的用戶的數量。為什么說是“可能”呢?因為圖中的每一條橫線代表的是用戶與系統的交互過程,也可以說是用戶的活躍區間,在這個區間段內,用戶只是處於一種活躍狀態,而並不是說一直保持着與服務端的交互,這也是圖中的橫線用的是虛線的原因。所以,並發度表達的,是系統在一定的訪問分布下,可能承受的最大並發壓力,它是一種可能性。

  這樣這個概念應該比較容易理解了,我們再來看看並發度的值是如何得出的。繼續之前的分析結果“系統的使用壓力集中在2個小時內,在這個時間段內共有100個用戶訪問,且壓力是平均分布的,平均每個用戶使用系統的時間是30分鍾”,依然利用剛剛做的那條線,記對應的時間軸刻度為B,我們需要知道的是,有多少條代表交互過程的橫線與之相交。

  很明顯,開始時間點在B之前,結束時間點在B之后的橫線,它的起點必須落在從B向前一個用戶活躍時長的區間內,即下圖的AB區域內。

  

  接下來只需簡單的算術就可以了,100個用戶訪問平均分布在2小時內,AB時長為平均用戶活躍時間,即30分鍾,那么在AB區域內有100*30min/2h=25個用戶訪問。這25個用戶在B時刻都可能會與系統發生交互,對系統照成壓力,雖然只是一種理論上的可能性。

  這就是並發度,理解它的意義了么?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM