jmeter 并發用戶數,在線用戶數,平均并發 峰值并發實戰演示

jmeter 并發用戶數,在線用戶數,平均并發 峰值并發介紹:

【記錄以下兩個案例】

在線用戶數與并發用戶數的區別和比例關系

在線用戶數:用戶同時在一定時間段的在線數量

并發用戶數:某一時刻同時向服務器發送請求的用戶數

一般而言,我們習慣以5-20的比率來推算并發用戶與在線用戶之間的關系。即,并發與在線的比例約為5%-20%

比如,某網站存在注冊用戶數為10W人,但同時在線最多1W人,但這1W個人,可能只有500人會瀏覽帖子,500人會進行發帖,只有這1000個人對服務器才有交易,那我們計算并發量的時候,就可以以1000為標準!

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

??????? 假設有一個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是login session的平均長度;T指考察的時間段長度。

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

實例:

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

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

????????????? ?C = 400*4/8 = 200

????????????? ?C’≈200+3*根號200 = 242

--------------------------------------------------------------------------------------------

另一實戰案例:

案例操作如下?

并發200,不限迭代次數,同時在請求下面加RPS定時器。

目的是在200線程下,將RPS逐步增加到1000/S,并持續運行一段時間。


在線程下面添加TPS,HPS,響應時間三種監聽器


啟動jmeter,運行一段時間之后我們觀察一下監聽器的數據圖表。

RPS?在793/s的時候,出現拐點,請求曲線的角度開始收窄


TPS在?720/s左右開始出現劇波動,前期一直保持平穩上升,可以認為這是吞吐量的一個拐點

另外,在1:03秒的時候,也就是TPS達到907/S?的時候,事物開始出現錯誤。此時短暫出現百度頁面打不開的情況。

1:可以認為此處就是一個性能瓶頸

2:有可能是百度對ip的訪問量做了限流,防止爬蟲

3:有可能是我當前環境的問題,包括帶寬,內存,cpu等等資源的限制,后期都需要考慮進去

觀察分析聚合報告

在性能穩定的情況下,才可以套用公式去計算出最大并發數

1:穩定狀態下,最大?RPS= 793/S

2:穩定情況下,響應時間大約長期保持在160 ms

3:穩定情況下,峰值并發數大約是 793*160(并發數 = RPS * 響應時間)=126

4:穩定情況下,峰值并發=平均并發 + 3*√平均并發,所以得出平均并發大約是?96

---------------------------------------------------------------------------------------------------------------------------------------------------------------

并發數 = RPS * 響應時間

圖示

結果驗證:

200RPS保持1分鐘,查看聚合報告

首先我們就能看出,在200RPS下,平均TPS只有172!

其次,平均并發數 = 200*0.047 = 9.4? ?意味著我只需要9個線程,就可以在一秒內釋放200RPS的壓力

可以算出每個線程每秒的請求數是?200/9.4 =21,也就是一個線程一秒內最大迭代21次

反推每個請求的響應時間 大約 是 1000/21 大約是 47ms

前后驗證的結果都相符!

原文地址:https://testerhome.com/articles/20770

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。