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