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