1. 程式人生 > >關於併發連線數與線上數的關係

關於併發連線數與線上數的關係

在實際的效能測試中,經常接觸到的與併發使用者數相關的概念還包括“併發使用者數”、“系統使用者數”和“同時線上使用者數”,下面用一個實際的例子來說明它們之間的差別。

假設有一個OA系統,該系統有2000個使用使用者——這就是說,可能使用該OA系統的使用者總數是2000名,這個概念就是“系統使用者數”,該系統有一個“線上統計”功能(系統用一個全域性變數記數所有已登入的使用者),從線上統計功能中可以得到,最高峰時有500人線上(這個500就是一般所說的“同時線上人數”),那麼,系統的併發使用者數是多少呢?

根據我們對業務併發使用者數的定義,這500就是整個系統使用時最大的業務併發使用者數。當然,500這個數值只是表明在最高峰時刻有500個使用者登入了系統,並不表示實際伺服器承受的壓力。因為伺服器承受的壓力還與具體的使用者訪問模式相關。例如,在這500個“同時使用系統”的使用者中,考察某一個時間點,在這個時間上,假設其中40%的使用者在較有興致地看系統公告(注意:“看”這個動作是不會對服務端產生任何負擔的),20%的使用者在填寫複雜的表格(對使用者填寫的表格來說,只有在“提交”的時刻才會向服務端傳送請求,填寫過程是不對服務端構成壓力的),20%部分使用者在發呆(也就是什麼也沒有做),剩下的20%使用者在不停地從一個頁面跳轉到另一個頁面——在這種場景下,可以說,只有20%的使用者真正對伺服器構成了壓力。因此,從上面的例子中可以看出,伺服器實際承受的壓力不只取決於業務併發使用者數,還取決於使用者的業務場景。

在實際的效能測試工作中,測試人員一般比較關心的是業務併發使用者數,也就是從業務角度關注究竟應該設定多少個併發數比較合理,因此,在後面的討論中,也是主要針對業務併發使用者數進行討論,而且,為了方便,直接將業務併發使用者數稱為併發使用者數。

(1)  計算平均的併發使用者數: C =nL/T 

(2)  併發使用者數峰值: C’ ≈ C+3*√C

公式(1)中,C是平均的併發使用者數;n是login session的數量;L是loginsession的平均長度;T指考察的時間段長度。

公式(2)則給出了併發使用者數峰值的計算方式中,其中,C’指併發使用者數的峰值,C就是公式(1)中得到的平均的併發使用者數。該公式的得出是假設使用者的loginsession產生符合泊松分佈而估算得到的。

例項:

假設有一個OA系統,該系統有3000個使用者,平均每天大約有400個使用者要訪問該系統,對一個典型使用者來說,一天之內使用者從登入到退出該系統的平均時間為4小時,在一天的時間內,使用者只在8小時內使用該系統。

則根據公式(1)和公式(2),可以得到:

C = 400*4/8 = 200

C’≈200+3*√200 = 242