容易混淆的“并發(fā)”概念
這篇文章摘自kruny的blog,作者的blog地址為:http://www.cnblogs.com/kruny。本文詳細的介紹了幾個服務器并發(fā)知識中比較容易混淆的概念,對服務器并發(fā)的初學者能夠起到很大的幫助,51CTO.com在此向作者表示感謝。以下是文章原文。
昨天讀完了段念寫的《軟件性能測試過程詳解與案例剖析》一書的***章,感覺學到了不少東西,以下將該書中的我認為是精華的一篇復制過來給大家一起看看:
在實際的性能測試中,經常接觸到的與并發(fā)用戶數(shù)相關的概念還包括“并發(fā)用戶數(shù)”、“系統(tǒng)用戶數(shù)”和“同時在線用戶數(shù)”,下面用一個實際的例子來說明它們之間的差別。
假設有一個OA系統(tǒng),該系統(tǒng)有2000個使用用戶——這就是說,可能使用該OA系統(tǒng)的用戶總數(shù)是2000名,這個概念就是“系統(tǒng)用戶數(shù)”,該系統(tǒng)有一個“在線統(tǒng)計”功能(系統(tǒng)用一個全局變量記數(shù)所有已登錄的用戶),從在線統(tǒng)計功能中可以得到,***峰時有500人在線(這個500就是一般所說的“同時在線人數(shù)”),那么,系統(tǒng)的并發(fā)用戶數(shù)是多少呢?
根據(jù)我們對業(yè)務并發(fā)用戶數(shù)的定義,這500就是整個系統(tǒng)使用時***的業(yè)務并發(fā)用戶數(shù)。當然,500這個數(shù)值只是表明在***峰時刻有500個用戶登錄了系統(tǒng),并不表示實際服務器承受的壓力。因為服務器承受的壓力還與具體的用戶訪問模式相關。例如,在這500個“同時使用系統(tǒng)”的用戶中,考察某一個時間點,在這個時間上,假設其中40%的用戶在較有興致地看系統(tǒng)公告(注意:“看”這個動作是不會對服務端產生任何負擔的),20%的用戶在填寫復雜的表格(對用戶填寫的表格來說,只有在“提交”的時刻才會向服務端發(fā)送請求,填寫過程是不對服務端構成壓力的),20%部分用戶在發(fā)呆(也就是什么也沒有做),剩下的20%用戶在不停地從一個頁面跳轉到另一個頁面——在這種場景下,可以說,只有20%的用戶真正對服務器構成了壓力。因此,從上面的例子中可以看出,服務器實際承受的壓力不只取決于業(yè)務并發(fā)用戶數(shù),還取決于用戶的業(yè)務場景。
在實際的性能測試工作中,測試人員一般比較關心的是業(yè)務并發(fā)用戶數(shù),也就是從業(yè)務角度關注究竟應該設置多少個并發(fā)數(shù)比較合理,因此,在后面的討論中,也是主要針對業(yè)務并發(fā)用戶數(shù)進行討論,而且,為了方便,直接將業(yè)務并發(fā)用戶數(shù)稱為并發(fā)用戶數(shù)。
(1) 計算平均的并發(fā)用戶數(shù): C = nL/T
(2) 并發(fā)用戶數(shù)峰值: C’ ≈ C+3根號C
公式(1)中,C是平均的并發(fā)用戶數(shù);n是login session的數(shù)量;L是login session的平均長度;T指考察的時間段長度。
公式(2)則給出了并發(fā)用戶數(shù)峰值的計算方式中,其中,C’指并發(fā)用戶數(shù)的峰值,C就是公式(1)中得到的平均的并發(fā)用戶數(shù)。該公式的得出是假設用戶的login session產生符合泊松分布而估算得到的。
實例:
假設有一個OA系統(tǒng),該系統(tǒng)有3000個用戶,平均每天大約有400個用戶要訪問該系統(tǒng),對一個典型用戶來說,一天之內用戶從登錄到退出該系統(tǒng)的平均時間為4小時,在一天的時間內,用戶只在8小時內使用該系統(tǒng)。
則根據(jù)公式(1)和公式(2),可以得到:
C = 400*4/8 = 200
C’≈200+3*根號200 = 242
呵呵,請大家不要見笑,雖然上面寫的都是很基礎的東西,但是對我本人來講,在還沒有看這本書之前,這些概念我是特別模糊的。

























