怎么通過業(yè)務(wù)量來計算TPS多少合適呢?
案例1,秒殺型算法
案例的業(yè)務(wù)量要求
某業(yè)務(wù),類似秒殺型,用戶估算有2W左右,每個用戶平均請求2次接口(查詢用戶信息接口、查詢業(yè)務(wù)接口), 這些用戶大概率會在2分鐘內(nèi)會訪問我們的系統(tǒng),業(yè)務(wù)要保證用戶2s能打開頁面
TPS的分析
TPS是系統(tǒng)每秒鐘處理的任務(wù)數(shù)量,給定二業(yè)務(wù)場景,我們就需要先計算出來每秒需要系統(tǒng)處理多少任務(wù),從而反推在壓力測試的時候,需要給多大的TPS了。
首先,整個系統(tǒng)的總請求數(shù)=用戶(2W)* 每個用戶請求數(shù)(2次)= 40000次
其次,每秒要求處理的請求數(shù)=總請求數(shù)/時間(切換到秒) 即約350(333向上取個整吧)。
最后,TPS并發(fā)數(shù)量與每個請求所消耗的時間,可實際計算出每秒實際能夠處理的請求數(shù)。
即每秒實際處理請求數(shù)量=tps數(shù)量 * 1000【1秒,需要切換為毫秒】/單組tps處理時間【這里是按200ms返回】
因此,我們只要保證 每秒實際處理請求數(shù)>每秒要求處理的請求數(shù) 就可以了。
最終結(jié)果就是
TPS數(shù)量 > 每秒要求處理請求數(shù) * tps返回時間【按200ms計算】/1000ms
帶入數(shù)據(jù)計算
tps>(350 * 200)/1000,具體tps>70。
因此可讓壓力測試人員按照tps100來壓接口,返回在200ms以內(nèi)就滿足性能要求。
當然如果實際tps50的返回時間為100ms,則按照這個粗略的公式來推算,也是能夠支撐的(350 * 100/1000=35,也就是說tps高于35,返回100ms以內(nèi)也是可以的)
案例2,我們來看一個日常服務(wù)的算法
如:一個100w訪問的服務(wù),每天訪問集中白天8小時,每個用戶大約會請求3個接口,每天早上9點是峰值。
首先計算日均請求數(shù)(每秒)
按8小時 100w訪問量、平均3個接口請求計算
每秒日均請求數(shù)=100w(訪問量)* 3(每個訪問量平均請求接口數(shù))/8(小時)/3600(切換成秒),結(jié)果就是每秒請求100次。
按接口200ms返回,tps需要> 100 * 200/1000,即>20就行了。
如考慮日常服務(wù)的峰值,則按4 * 日均,即每秒請求400次,則tps>80即可,因此可推薦按tps=100來做接口的壓力測試。
相關(guān)總結(jié)
時間段越短,數(shù)據(jù)也越接近于瞬間并發(fā)
如果用整日的數(shù)據(jù)來計算總請求數(shù),需要按照日流量分布來估算一個峰值數(shù)據(jù),日常APP可考慮使用 峰值=4 * 日均【當然還是要看你具體的訪問量】
如果覺得以上繁雜,反正你也可以參考這個結(jié)論:
沒啥人用的服務(wù) tps 20,返回有300ms就行了
十萬到百萬級的服務(wù),響應(yīng)能達到tps50 /200ms就可以了
后臺服務(wù),能達到tps 20 / 200ms即可(通常后臺同時使用也沒多少人)
秒殺類的短時間高并發(fā)……TPS100或200 在 100ms內(nèi)響應(yīng) 應(yīng)該也能撐一段時間(具體情況還是要看業(yè)務(wù)量)