性能測試筆記(一):吞吐量與並發數

性能測試筆記(一):吞吐量與並發數

來自專欄 性能測試

先看下定義:

吞吐量:一段時間內應用系統處理用戶的請求數(以下介紹指單位時間內,也可以理解為吞吐率),這個定義考察點一般是系統本身因素;當然也可以用單位時間內流經被測系統的數據流量,一般單位為b/s,即每秒鐘流經的位元組數,這個定義的考察點既有系統本身因素也有網路,外設等因素,也可以理解為除客戶端以外的測試環境及被測系統。

並發用戶數:指同一時間點對業務功能同時操作的用戶數,可以分為兩種:一種是嚴格意義上的並發,即所有的用戶在同一時刻做同一件事或操作,這時業務功能一般指同一類型的業務;另外一種並發是廣義範圍的並發,這種並發與前一種並發的區別是,儘管多個用戶對系統發出了請求或者進行了操作,但是這些請求或都操作可以是相同的,也可以是不同的,這時業務功能可能不是同一類型的業務。

再看看兩則有沒有關聯,上網查了下資料有些資料說有關係,有些說沒有直接關係,下面說說我的看法:

一般來說,在系統的設計範圍之內,吞吐量隨系統的並發用戶數的增加呈現增加趨勢,也就是說你客戶端來多少請求數系統吃(處理)多少請求數;當超出這個範圍時有兩種情況,一種是系統只能處理這麼多,超過這個數系統不接收了,最後隨著並發用戶數的增多吞吐量是一個水平的直線;

還有一種情況是不管來多少系統都接收最後導致系統吞吐量下降甚至系統崩潰。並發用戶數是客戶端單位時間內對伺服器端施加的壓力,具體能不能接受並處理要看被測系統的吞吐量,而吞吐量是被測系統單位時間內處理的請求數或者說單位時間內處理的位元組數;一個著重於客戶端的操作即測試手段,一個著重於應用系統的處理能力即查看對象;(上面的討論沒有考慮兩者的單位,如一個用戶同時有多個請求情況)

最後順便把兩者的計算公式註明下:

平均並發用戶數的計算:C=nL / T

其中C是平均的並發用戶數,n是平均每天訪問用戶數,L是一天內用戶從登錄到退出的平均時間(操作平均時間),T是考察時間長度(一天內多長時間有用戶使用系統)

並發用戶數峰值計算: C^約等於C + 3*根號C 其中C^是並發用戶峰值,C是平均並發用戶數,該公式遵循泊松分布理論。(該公式針對一般被測系統,特殊不做討論)

吞吐量計算:當沒有遇到性能瓶頸的時候,吞吐量與虛擬用戶數之間存在一定的聯繫,可以採用以下公式計算:F=VU * R / T其中F為吞吐量,VU表示虛擬用戶個數,R表示每個虛擬用戶發出的請求數,T表示性能測試所用的時間,其實通過這個公式就能看出吞吐量與並發用戶數之間的關係了(這裡的VU就是我們用工具模擬的並發用戶數)。

推薦閱讀:

Redis常見的應用場景解析
遲來的HTTP2簡明教程
cort_proto v0.9.0 第一版發布
golang簡單key/value資料庫(二)

TAG:性能測試 | 軟體測試 | 高並發 |