網(wǎng)站首頁 編程語言 正文
最近需要對再次對服務(wù)器進(jìn)行壓力測試,這里整一下最近學(xué)習(xí)到的估算方案和估算方式。以下估算方式?jīng)]有考慮類似于秒殺這種極端情況。
并發(fā)值估算
1.1 經(jīng)典公式
一般來說,利用以下經(jīng)驗公式進(jìn)行估算系統(tǒng)的平均并發(fā)用戶數(shù)和峰值數(shù)據(jù)
- 1)平均并發(fā)用戶數(shù)為 C = nL/T
- 2)并發(fā)用戶數(shù)峰值 C‘ = C + 3*根號C
C是平均并發(fā)用戶數(shù),n是login session的數(shù)量,L是login session的平均長度,T是值考察的時間長度
C'是并發(fā)用戶數(shù)峰值
如用外賣點餐APP套入這個公式計計算下并發(fā)用戶數(shù)100W用戶下并發(fā)用戶數(shù)大致范圍:
假設(shè)外賣APP有100W個用戶,而日活用戶假設(shè)占12.5%即12.5W個日活用戶,而每個日活用戶打開APP到點餐平均時間大概為5分鐘,而假設(shè)早上8點到晚上12點都會有用戶使用該APP。則可以計算出一個值:
平均并發(fā)用戶數(shù)C=125000*5/16*60=651 并發(fā)用戶數(shù)峰值C`=651+3*根號 651=726
上面即為經(jīng)典公式計算出的并發(fā)用戶數(shù),但看起來和實際情況可能有差異。
作為外賣APP大部分人都會在高峰期進(jìn)行點餐,所以對于外賣APP這類應(yīng)該單獨進(jìn)行考慮。
我們采用2/8原則來估算并發(fā)用戶數(shù),即80%的用戶數(shù)會在高峰期點餐,而高峰期設(shè)定為11-12,17-19點一共5個小時,在這種情況下估算并發(fā)用戶數(shù):
平均并發(fā)用戶數(shù)C=125000*5*0.8/5*60=1666 并發(fā)用戶數(shù)峰值C`=1666+3*根號 1666=1788
1.2通用公式
對絕大多數(shù)場景,可以用(用戶總量/統(tǒng)計時間)*影響因子(一般為3)來進(jìn)行估算并發(fā)量。
比如,以乘坐地鐵為例子,每天乘坐人數(shù)為5萬人次,每天早高峰是7到9點,晚高峰是6到7點,根據(jù)8/2原則,80%的乘客會在高峰期間乘坐地鐵,則每秒到達(dá)地鐵檢票口的人數(shù)為5000080%/(36060)=3.7,約4人/S,考慮到安檢,入口關(guān)閉等因素,實際堆積在檢票口的人數(shù)肯定比這個要大,假定每個人需要3秒才能進(jìn)站,那實際并發(fā)應(yīng)為4人/s3s=12,當(dāng)然影響因子可以根據(jù)實際情況增大!
所以物聯(lián)網(wǎng)設(shè)備其實是可以考慮為通用設(shè)備。
在比較極端的情況下考慮,100萬個設(shè)備其中95%均為日活設(shè)備即95W,且假設(shè)其中80%的設(shè)備都會在3個小時內(nèi)訪問服務(wù)器(高峰期),則可以推算并發(fā)設(shè)備數(shù)。
950000*0.8/(3*60*60)=70/s
因物聯(lián)網(wǎng)設(shè)備的不確定性較高,我們將影響因子設(shè)置為5
.70*5=350 即活躍設(shè)備數(shù)在每秒為350個。
原文鏈接:https://blog.csdn.net/m0_37263637/article/details/88649056
相關(guān)推薦
- 2023-07-25 SpringBoot整合Mybatis詳解
- 2022-06-27 Python導(dǎo)入自定義路徑的方法_python
- 2022-09-13 cmd命令打開及切換目錄路徑的實現(xiàn)_DOS/BAT
- 2022-05-22 python?使用tkinter與messagebox寫界面和彈窗_python
- 2022-06-09 ASP.NET?Core中的Configuration配置一_基礎(chǔ)應(yīng)用
- 2022-05-20 python循環(huán)控制之break和continue流程控制語句_python
- 2022-10-23 C#中new操作符的工作機制_C#教程
- 2022-11-14 C語言?ffmpeg與sdl實現(xiàn)播放視頻同時同步時鐘詳解_C 語言
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支