來(lái)源:51Testing軟件測(cè)試網(wǎng)
那么我們?nèi)绾蝸?lái)估算這個(gè)并發(fā)值呢?
在此我們需要作出說(shuō)明,一般我們需要的數(shù)據(jù)應(yīng)該來(lái)自于實(shí)際數(shù)據(jù)(比如系統(tǒng)日志的記錄),這樣更可靠,只有當(dāng)系統(tǒng)新啟動(dòng)且無(wú)任何數(shù)據(jù)參考的時(shí)候我們才需要進(jìn)行估算。
比如我們測(cè)試地鐵大廳的性能情況,該如何去估算當(dāng)乘客進(jìn)入大廳時(shí),地鐵大廳的性能呢?下面以筆者經(jīng)常乘坐的地鐵5號(hào)線立水橋南站為例進(jìn)行估算,過(guò)程與數(shù)據(jù)僅供參考。
假定每天從該站乘坐地鐵的人數(shù)為5萬(wàn)人次,每天的早高峰為7-9點(diǎn),晚高峰為6-7點(diǎn),根據(jù)8/2原則,80%的乘客(人次)會(huì)在高峰期乘坐該站的地鐵,則平均每秒到達(dá)地鐵檢票口的人數(shù)為(50000×80%)/(3×60×60) = 3.7~=4人,當(dāng)然這個(gè)4人不能作為計(jì)算所用的并發(fā)值,因?yàn)閷?duì)此時(shí)的受壓入口檢票口來(lái)說(shuō),4只是每秒到達(dá)的壓力(即請(qǐng)求)數(shù)量,考慮到安檢、入口關(guān)閉等因素,實(shí)際堆積在檢票口的人數(shù)可能要大于這個(gè)數(shù)目,假定每個(gè)人需要3秒左右才能入站,則實(shí)際并發(fā)應(yīng)該為(4人/秒)×3秒=12。當(dāng)然我們必須指出,這種方法得到的情況并非極端值,因?yàn)榧词棺鳛樵缤砀叻?,人?shù)的分布也不是平均的(具體情況需要根據(jù)實(shí)際數(shù)據(jù)進(jìn)行分析),但對(duì)大部分系統(tǒng)的大部分場(chǎng)景,我們可以用(用戶總量/統(tǒng)計(jì)時(shí)間)×影響因子(一般為3,為經(jīng)驗(yàn)系數(shù))來(lái)進(jìn)行估算。
實(shí)際上,還有一種估算方法,而這種估算方法為國(guó)內(nèi)眾多書籍、文章反復(fù)轉(zhuǎn)載,其來(lái)源與Eric Man Wong在2004年公布的一篇“論文”《Method for Estimating the Number of Concurrent Users》,其核心公式如下:
C=nL/T
其中,C代表在線用戶,n代表執(zhí)行事務(wù)的用戶總數(shù),L代表每用戶的平均在線時(shí)間,T為待統(tǒng)計(jì)的總時(shí)間,依舊以地鐵入站的情況進(jìn)行估算,依舊考慮8/2原則,即n為50000*80%人,T為3小時(shí),L即我們?cè)诘罔F中停留的時(shí)間(從進(jìn)站到上車),假定為5分鐘,因此得到的公式為:
C=(50000人×80%×5min)/3×60min = 1111
并發(fā)數(shù)是1111,比前面一種算法要高的多,這是為什么呢?
實(shí)際上,后面這種統(tǒng)計(jì)方法是由一定的局限性與適用范圍的,對(duì)其統(tǒng)計(jì)的每個(gè)并發(fā)用戶而言,每個(gè)用戶所在線的時(shí)間(如上面的5min),并不一定是我們所需要的場(chǎng)景耗時(shí),該5分鐘應(yīng)該是整個(gè)大場(chǎng)景(如從進(jìn)站到離開),而我們通常所使用的場(chǎng)景往往包含了一連貫的子場(chǎng)景,如進(jìn)站、等待、上車等,因此,如果我們測(cè)試的場(chǎng)景是某一個(gè)具體的動(dòng)作,不建議采用這種公式(當(dāng)然,如果單獨(dú)為每個(gè)動(dòng)作估算時(shí)間也是可以的。)
從本質(zhì)上來(lái)說(shuō),兩種公式的統(tǒng)計(jì),結(jié)果都是一樣的,關(guān)鍵取決與統(tǒng)計(jì)口徑。
極限的問(wèn)題也是我們需要考慮的,數(shù)據(jù)的估算往往是一個(gè)大的工程,涉及到很多復(fù)雜的情況,比如用戶的進(jìn)入與離開,人流異常等,因此我們考慮的多為常規(guī)的情況,在一些特殊的情況下,用戶的峰值往往要大很多,此時(shí)需要去對(duì)極限情況下進(jìn)行估算。
此時(shí)的目的在于檢查系統(tǒng)的極限承載情況,如列車極限大承載2000人,站內(nèi)極限承載10000人是一樣的,超出這個(gè)極限,就需要采取一些緊急措施,比如限流(對(duì)應(yīng)到普通的系統(tǒng),就是設(shè)置特大連接數(shù),超出的必須等待)之類。
這種值的計(jì)算,不可能給出準(zhǔn)確值,可以根據(jù)實(shí)際情況,協(xié)商而定,比如把經(jīng)驗(yàn)系數(shù)更改為5,這種情況下,如果有日志或者統(tǒng)計(jì)數(shù)據(jù)予以支撐,會(huì)更加精確。
● 回答客戶的疑惑
面對(duì)客戶,經(jīng)常需要去解答一些問(wèn)題,常見(jiàn)的幾類疑惑如下:
1、客戶堅(jiān)持要求并發(fā)2000,怎么辦?
這個(gè)問(wèn)題非常關(guān)鍵,即上面所謂的闡述只是為了讓大家對(duì)并發(fā)等概念有個(gè)大體的理解,但我們的工作重心不是一來(lái)就跟客戶講理論,而是合理、有效、迅速地完成項(xiàng)目,因此,特別是一些項(xiàng)目的咨詢階段,如果客戶堅(jiān)持提出達(dá)到某個(gè)并發(fā)要求,我們首先需要看下這個(gè)情況產(chǎn)品能否支持,如果不支持,用修改架構(gòu)(比如增加服務(wù)器,公司的大部分產(chǎn)品都支持集群)來(lái)完成,如果還是沒(méi)法達(dá)到要求,我們?cè)賮?lái)跟客戶交流,從客戶能理解的方式,從客戶的角度去計(jì)算并發(fā),然后得到認(rèn)可就行了。當(dāng)然,解決這些問(wèn)題,需要我們對(duì)公司的產(chǎn)品性能基本比較了解(可以經(jīng)過(guò)產(chǎn)品的性能測(cè)試報(bào)告來(lái)了解,質(zhì)保將來(lái)會(huì)考慮出臺(tái)所有產(chǎn)品的性能指標(biāo)集合供參考),如果難度還是很大,可以申請(qǐng)質(zhì)保的支持。大家一起去解決這個(gè)問(wèn)題。
2、你們的系統(tǒng)能支持10000并發(fā)嗎?
一些客戶經(jīng)常提出非常高的并發(fā)要求,此類客戶通常對(duì)性能并不了解,或者之前有客戶對(duì)其做了錯(cuò)誤的解釋,此時(shí)我們需要解釋我們測(cè)試并發(fā)的概念:同時(shí)向服務(wù)器發(fā)出請(qǐng)求的虛擬用戶數(shù)。(而我們通常會(huì)采用嚴(yán)格的方法進(jìn)行場(chǎng)景測(cè)試:即采用集合點(diǎn)的方式進(jìn)行操作。這種方式也即前面介紹的狹義并發(fā)的概念。)
另外,并發(fā)值需要考慮實(shí)際情況,需要根據(jù)實(shí)際的需求進(jìn)行計(jì)算,與此同時(shí),并發(fā)的影響因素并非僅僅是軟件本身,還有網(wǎng)絡(luò)、架構(gòu)等等,TRS的產(chǎn)品性能測(cè)試往往給出單位機(jī)器的性能,用戶可以根據(jù)這個(gè)基礎(chǔ)值來(lái)構(gòu)造實(shí)際架構(gòu)。
3、你們的系統(tǒng)怎么才支持200并發(fā)?
并發(fā)的概念在于同時(shí)在處理某一件事情,而且系統(tǒng)一直保持這樣的一個(gè)強(qiáng)度,并不是說(shuō)總共只有200人,另外,我們測(cè)試的一般是單機(jī),也就是說(shuō),如果更好的性能要求,可以用集群的方式來(lái)獲得更優(yōu)的結(jié)果,目前TRS的產(chǎn)品基本都支持集群的部署架構(gòu)。需要注意的是,并發(fā)的支持除了軟件本身,還受到網(wǎng)絡(luò)、服務(wù)器性能等多方面原因的影響。
4、是否可以使用每秒處理事務(wù)來(lái)衡量。
性能測(cè)試的衡量指標(biāo)除了響應(yīng)時(shí)間,還有吞吐量、每秒點(diǎn)擊數(shù)、每秒PV、每秒事務(wù)處理能力等,因此我們可以用多種方式進(jìn)行衡量,在更大意義上,各個(gè)指標(biāo)間也存在一定的內(nèi)涵聯(lián)系,結(jié)合起來(lái)考慮更能夠檢查系統(tǒng)的性能。但受制于一些客觀原因(如定制),在之前的報(bào)告中,指標(biāo)衡量存在一定的限制。
5、響應(yīng)時(shí)間與并發(fā)、壓力是什么關(guān)系?這么操作的響應(yīng)怎么才6秒,太慢了,你們的產(chǎn)品性能不行??!
一般的,一定的并發(fā)下將對(duì)系統(tǒng)造成一定的壓力,而對(duì)每個(gè)并發(fā)(用戶)而言,所體現(xiàn)出來(lái)的性能多是直觀的響應(yīng)時(shí)間,在環(huán)境一定的情況下,響應(yīng)時(shí)間越快說(shuō)明系統(tǒng)性能越好。但此處需要清除一個(gè)問(wèn)題,假定一個(gè)用戶獲取的響應(yīng)時(shí)間是5秒,這5秒都在對(duì)系統(tǒng)產(chǎn)生壓力嗎?
后面這個(gè)是一個(gè)有趣而有意義的問(wèn)題,我們知道這個(gè)響應(yīng)時(shí)間是從用戶發(fā)出請(qǐng)求到接收到響應(yīng)的為止的總耗時(shí),如果我們使用httpwatch之類的工具,可以很清晰的看到時(shí)間消耗的分布區(qū)間,我們可以把這個(gè)問(wèn)題比作是向墻壁擊出一個(gè)球,從擊出到彈回來(lái)的時(shí)間即為響應(yīng)時(shí)間。
大家打過(guò)壁球嗎?打壁球的過(guò)程其實(shí)就完美的詮釋了用戶發(fā)起請(qǐng)求到接受響應(yīng)整個(gè)過(guò)程,可以我們可以把墻壁看作系統(tǒng),打球者就是用戶,球是用戶發(fā)出的請(qǐng)求,擊打一次球包含有三個(gè)動(dòng)作:擊出球、球接觸墻壁、收到彈回的球。三個(gè)過(guò)程加起來(lái)的總時(shí)間就是這個(gè)請(qǐng)求(打出一發(fā)球)所得到的響應(yīng),但很顯然,真正對(duì)系統(tǒng)產(chǎn)生壓力的動(dòng)作在于接觸墻壁的時(shí)間,大部分的時(shí)間消耗在空中,即球在空中飛行時(shí)的時(shí)間,而這個(gè)飛行時(shí)間并不受系統(tǒng)控制,對(duì)應(yīng)到常規(guī)系統(tǒng),就很可能是網(wǎng)絡(luò)在傳輸過(guò)程中出現(xiàn)了問(wèn)題。
這個(gè)壁球的例子實(shí)際上還可以解釋一些相關(guān)的概念,比如并發(fā)就是同時(shí)擊出多個(gè)球,系統(tǒng)(墻壁)所能承受的極限并發(fā)壓力就是墻壁的面積所能容納的壁球數(shù)量,假定墻壁面積可以容納1000個(gè)球,則墻壁瞬間可以接觸的球的數(shù)量就是1000個(gè),這個(gè)就是狹義并發(fā)的概念了,考慮到空中飛行,即將觸碰墻壁的球,理論上的廣義并發(fā)值要高于1000。擊球時(shí)的力度可以理解為客戶端的性能,性能好發(fā)球就快,否則就慢,只要系統(tǒng)性能沒(méi)有達(dá)到瓶頸(比如墻壁沒(méi)有壞),系統(tǒng)的性能是跟客戶端呈正比的,即擊球速度越快,返回越快。
因此,當(dāng)遇到客戶對(duì)響應(yīng)時(shí)間有疑問(wèn)時(shí),我們需要解釋的重點(diǎn)在于,壓力在于球接觸墻壁的瞬間,但性能測(cè)試考核的響應(yīng)時(shí)間確實(shí)包含了兩次飛行(發(fā)送與接受)的時(shí)間,而這個(gè)時(shí)間是受包含服務(wù)器性能、網(wǎng)絡(luò)性能、客戶端性能在內(nèi)的多因素影響的,相信客戶可以理解。
● 簡(jiǎn)單的結(jié)論
如果您覺(jué)得上面說(shuō)的東西過(guò)于繁瑣,以下基本概念可能更適合閱讀。
1、并發(fā)分為狹義并發(fā)與廣義并發(fā)兩種,狹義并發(fā)指同一時(shí)間點(diǎn)開始做某件事情,廣義并發(fā)指同一時(shí)間段正在做某件事情;
2、并發(fā)與被考察的場(chǎng)景是息息相關(guān)的,測(cè)試中所指的并發(fā)一般指同一時(shí)間段在做某件事情(被測(cè)事務(wù))的用戶數(shù),在嚴(yán)格測(cè)試的環(huán)境下,我們會(huì)要求所有用戶在同一時(shí)間點(diǎn)集合并執(zhí)行;
3、在線用戶與并發(fā)用戶不是一個(gè)概念,在線用戶包含了很多非測(cè)試事務(wù)用戶、空閑的客戶等,因此不能把在線的用戶全計(jì)作并發(fā)用戶,一般的并發(fā)用戶占在線用戶總量在10%~20%左右,當(dāng)然,這個(gè)值僅供參考,實(shí)際問(wèn)題需要實(shí)際分析。
4、理論上說(shuō)并發(fā)越大性能越好,但其取決與很多因素,比如網(wǎng)絡(luò)、服務(wù)器數(shù)量、服務(wù)器性能、系統(tǒng)架構(gòu)、軟硬件優(yōu)化等,另外,并發(fā)的計(jì)算需要在需求階段根據(jù)實(shí)際情況進(jìn)行估算,這樣得到的結(jié)果才是合理的。
5、幾個(gè)概念的再次說(shuō)明:
→ 并發(fā)用戶數(shù):同時(shí)在操作被考察事務(wù)的用戶數(shù)
→ 在線用戶數(shù):當(dāng)前被測(cè)系統(tǒng)中的活動(dòng)用戶數(shù)(包括考察事務(wù)與非考察事務(wù))
→ 平均響應(yīng)時(shí)間:每個(gè)用戶操作事務(wù)獲得的平均響應(yīng)時(shí)間(算術(shù)平均值)
→ 90%響應(yīng)時(shí)間:90%用戶平均響應(yīng)時(shí)間在此值范圍內(nèi)(取除去10%極高值后的極限值)
→ 平均事務(wù)數(shù):?jiǎn)挝粫r(shí)間完成的事務(wù)數(shù)(如登錄、首頁(yè)讀取等)
→ 平均吞吐量:?jiǎn)挝粫r(shí)間內(nèi)的數(shù)據(jù)傳輸量
→ 平均點(diǎn)擊數(shù):?jiǎn)挝粫r(shí)間完成的請(qǐng)求數(shù)量
→ PV:某時(shí)間段內(nèi)完成的頁(yè)面請(qǐng)求數(shù)量
詳詢:王萍老師18988787201
詳詢:小文老師18988787201
![]() |
![]() |
王萍老師 | 小文老師 |
《中華考試網(wǎng)軟件測(cè)試培訓(xùn)》
《教育軟件測(cè)試培訓(xùn)頻道》
《軟件測(cè)試培訓(xùn)課程——深圳川石》
《深圳川石軟件性能測(cè)試培訓(xùn)》
《深圳川石企業(yè)性能測(cè)試(PL&LR)提升班》
《持續(xù)集成自動(dòng)化測(cè)試UFT Selenium提升班》
《深圳源昊寶安軟件測(cè)試培訓(xùn)班》
《深圳凌岳軟件自動(dòng)化測(cè)試培訓(xùn)班》
《深圳博睿軟件安全測(cè)試培訓(xùn)》
《深圳達(dá)內(nèi)軟件測(cè)試培訓(xùn)學(xué)?!?/a>