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