做網(wǎng)站常用到的css標(biāo)簽最新疫情最新情況
目錄:導(dǎo)讀
- 前言
- 一、Python編程入門到精通
- 二、接口自動(dòng)化項(xiàng)目實(shí)戰(zhàn)
- 三、Web自動(dòng)化項(xiàng)目實(shí)戰(zhàn)
- 四、App自動(dòng)化項(xiàng)目實(shí)戰(zhàn)
- 五、一線大廠簡歷
- 六、測(cè)試開發(fā)DevOps體系
- 七、常用自動(dòng)化測(cè)試工具
- 八、JMeter性能測(cè)試
- 九、總結(jié)(尾部小驚喜)
前言
一般推薦,如果你:
沒啥人用的服務(wù) tps 20,返回有300ms就行了;
十萬到百萬級(jí)的服務(wù),響應(yīng)能達(dá)到tps50 /200ms就可以了;
后臺(tái)服務(wù),能達(dá)到tps 20 / 200ms即可(通常后臺(tái)同時(shí)使用也沒多少人);
秒殺類的短時(shí)間高并發(fā)……TPS100或200 在 100ms內(nèi)響應(yīng) 應(yīng)該也能撐一段時(shí)間(具體情況還是要看業(yè)務(wù)量)
背景:
做項(xiàng)目開發(fā)的時(shí)候,不止一次被性能測(cè)試問“這個(gè)服務(wù)性能要求是多少?”他期望能得到一個(gè)這次接口TPS壓到50還是100,返回時(shí)間是100ms還是200ms的回答。然后壓力測(cè)試的腳本就跑起來,挨個(gè)接口就去壓了。
但作為產(chǎn)品我怎么知道報(bào)多少合適呢?(是的,在某些團(tuán)隊(duì)這是研發(fā)負(fù)責(zé)人應(yīng)該考慮的)。通常我們是只知道業(yè)務(wù)量,怎么轉(zhuǎn)換成tps、返回時(shí)間的要求呢?(有時(shí)候業(yè)務(wù)量都估算不出來,那這種場景下你就按最頂部的推薦的來測(cè)吧。)
現(xiàn)在,只要10分鐘,讓你了解怎么計(jì)算這些內(nèi)容。
首先,需要知道不同的產(chǎn)品有不同的應(yīng)對(duì)要求
手機(jī)發(fā)貨的搶購秒殺場景和美團(tuán)的場景需求不一致,導(dǎo)致產(chǎn)品性能要求就不一致
千萬級(jí)用戶的app和十萬級(jí)app,同樣的性能要求,轉(zhuǎn)換為技術(shù)指標(biāo)上也不一致
繼續(xù)計(jì)算,我們需要了解
什么是TPS?
Transactions Per Second(每秒傳輸?shù)氖挛锾幚韨€(gè)數(shù),或者說每秒系統(tǒng)接收的任務(wù)數(shù)量),系統(tǒng)接收到任務(wù)后會(huì)有一個(gè)處理時(shí)間。
在壓力測(cè)試時(shí),測(cè)試人員會(huì)主動(dòng)按一定tps的量來主動(dòng)發(fā)起接口請(qǐng)求,比如tps=50,就是每秒請(qǐng)求50次,獲取一個(gè)平均的響應(yīng)時(shí)間(單位一般都是毫秒ms)。壓力測(cè)試人員口中的TPS50 200ms返回,就是指每秒測(cè)試人員主動(dòng)發(fā)起50次請(qǐng)求,這些請(qǐng)求會(huì)在平均200ms返回。
由于其他技術(shù)指標(biāo)如QPS(數(shù)據(jù)的每秒查詢個(gè)數(shù))等性能都會(huì)在tps這個(gè)維度上展示出來,因此可通過tps對(duì)系統(tǒng)性能進(jìn)行簡單判斷,以滿足日常性能測(cè)試需求。
性能測(cè)試的指標(biāo)是怎么來的呢?
1、產(chǎn)品和運(yùn)營要給出業(yè)務(wù)匡算:
這個(gè)服務(wù),在多長時(shí)間段,多少人會(huì)訪問
2、性能要求上,通常情況下的APP應(yīng)該如何?
頁面訪問的2、5、8原理(用戶進(jìn)入服務(wù)2s內(nèi)要展示完所有內(nèi)容,超過5秒用戶就無法忍受了,超過8秒就沒有人再等了,直接關(guān)閉服務(wù))
因此頁面的渲染時(shí)間+資源文件的載入時(shí)間+接口的獲取時(shí)間需要保證1s~2s內(nèi)完成
3、這個(gè)條件下接口獲取時(shí)間多長合適?
無腦建議200ms以內(nèi)(考慮到你頁面也要2s打開,還要給其他工作留時(shí)間)
怎么通過業(yè)務(wù)量來計(jì)算TPS多少合適呢?
直接上公式不太好理解,我們先看案例
案例1:
秒殺型算法
案例的業(yè)務(wù)量要求
某業(yè)務(wù),類似秒殺型,用戶估算有2W左右,每個(gè)用戶平均請(qǐng)求2次接口(查詢用戶信息接口、查詢業(yè)務(wù)接口), 這些用戶大概率會(huì)在2分鐘內(nèi)會(huì)訪問我們的系統(tǒng),業(yè)務(wù)要保證用戶2s能打開頁面
TPS的分析
TPS是系統(tǒng)每秒鐘處理的任務(wù)數(shù)量,給定二業(yè)務(wù)場景,我們就需要先計(jì)算出來每秒需要系統(tǒng)處理多少任務(wù),從而反推在壓力測(cè)試的時(shí)候,需要給多大的TPS了。
首先,整個(gè)系統(tǒng)的總請(qǐng)求數(shù)=用戶(2W)* 每個(gè)用戶請(qǐng)求數(shù)(2次)= 40000次
其次,每秒要求處理的請(qǐng)求數(shù)=總請(qǐng)求數(shù)/時(shí)間(切換到秒) 即約350(333向上取個(gè)整吧)。
最后,TPS并發(fā)數(shù)量與每個(gè)請(qǐng)求所消耗的時(shí)間,可實(shí)際計(jì)算出每秒實(shí)際能夠處理的請(qǐng)求數(shù)。
即每秒實(shí)際處理請(qǐng)求數(shù)量=tps數(shù)量 * 1000【1秒,需要切換為毫秒】/單組tps處理時(shí)間【這里是按200ms返回】
因此,我們只要保證 每秒實(shí)際處理請(qǐng)求數(shù)>每秒要求處理的請(qǐng)求數(shù) 就可以了。
最終結(jié)果就是:
TPS數(shù)量 > 每秒要求處理的請(qǐng)求數(shù) * tps返回時(shí)間【按200ms計(jì)算】/1000ms
帶入數(shù)據(jù)計(jì)算
tps>(350 * 200)/1000,具體tps>70。
因此可讓壓力測(cè)試人員按照tps100來壓接口,返回在200ms以內(nèi)就滿足性能要求。
當(dāng)然如果實(shí)際tps50的返回時(shí)間為100ms,則按照這個(gè)粗略的公式來推算,也是能夠支撐的(350 * 100/1000=35,也就是說tps高于35,返回100ms以內(nèi)也是可以的)
案例2:
一個(gè)日常服務(wù)的算法
如:一個(gè)100w訪問的服務(wù),每天訪問集中白天8小時(shí),每個(gè)用戶大約會(huì)請(qǐng)求3個(gè)接口,每天早上9點(diǎn)是峰值。
首先計(jì)算日均請(qǐng)求數(shù)(每秒);
按8小時(shí) 100w訪問量、平均3個(gè)接口請(qǐng)求計(jì)算;
每秒日均請(qǐng)求數(shù)=100w(訪問量)* 3(每個(gè)訪問量平均請(qǐng)求接口數(shù))/8(小時(shí))/3600(切換成秒),結(jié)果就是每秒請(qǐng)求100次。
按接口200ms返回,tps需要> 100 * 200/1000,即>20就行了。
如考慮日常服務(wù)的峰值,則按4 * 日均,即每秒請(qǐng)求400次,則tps>80即可,因此可推薦按tps=100來做接口的壓力測(cè)試。
相關(guān)總結(jié):
時(shí)間段越短,數(shù)據(jù)也越接近于瞬間并發(fā)
如果用整日的數(shù)據(jù)來計(jì)算總請(qǐng)求數(shù),需要按照日流量分布來估算一個(gè)峰值數(shù)據(jù),日常APP可考慮使用 峰值=4 * 日均【當(dāng)然還是要看你具體的訪問量】
如果覺得以上繁雜,反正你也可以參考這個(gè)結(jié)論:
沒啥人用的服務(wù) tps 20,返回有300ms就行了;
十萬到百萬級(jí)的服務(wù),響應(yīng)能達(dá)到tps50 /200ms就可以了;
后臺(tái)服務(wù),能達(dá)到tps 20 / 200ms即可(通常后臺(tái)同時(shí)使用也沒多少人);
秒殺類的短時(shí)間高并發(fā)……TPS100或200 在 100ms內(nèi)響應(yīng) 應(yīng)該也能撐一段時(shí)間(具體情況還是要看業(yè)務(wù)量);
下面是我整理的2023年最全的軟件測(cè)試工程師學(xué)習(xí)知識(shí)架構(gòu)體系圖 |
一、Python編程入門到精通
二、接口自動(dòng)化項(xiàng)目實(shí)戰(zhàn)
三、Web自動(dòng)化項(xiàng)目實(shí)戰(zhàn)
四、App自動(dòng)化項(xiàng)目實(shí)戰(zhàn)
五、一線大廠簡歷
六、測(cè)試開發(fā)DevOps體系
七、常用自動(dòng)化測(cè)試工具
八、JMeter性能測(cè)試
九、總結(jié)(尾部小驚喜)
擁有夢(mèng)想是勇敢的開始,堅(jiān)持奮斗是壯麗的征程。不畏艱難,迎難而上,只有燃燒激情、持之以恒,才能譜寫人生最美妙的樂章。相信自己,跨越極限。
每一次努力都是為自己的夢(mèng)想增添一抹色彩,每一次挑戰(zhàn)都是成長的機(jī)會(huì)。不畏困難,勇往直前,只要堅(jiān)持奮斗,就能綻放出人生最耀眼的光芒,創(chuàng)造屬于自己的璀璨未來!
奮斗是翻越荊棘的道路,汗水是收獲的甘露。不屈不撓,追求卓越,只要努力奮斗,就能點(diǎn)亮人生的星空。相信自己,堅(jiān)持夢(mèng)想,你將書寫屬于自己的輝煌傳奇,綻放生命的無限光芒。