Jmeter中一些概念的理解——90%响应时间、事务、并发
一、90%響應(yīng)時(shí)間(參考蟲師博客)
90%Line?
一組數(shù)由小到大進(jìn)行排列,找到他的第90%個(gè)數(shù)(假如是12),那么這個(gè)數(shù)組中有90%的數(shù)將小于等于12?。
用在性能測(cè)試的響應(yīng)時(shí)間,也就是90%請(qǐng)求響應(yīng)時(shí)間不會(huì)超過12?秒。
例如:
某一次測(cè)試結(jié)果,每個(gè)sample的響應(yīng)時(shí)間分別是:1、3、4、9、2、8、5、7、6、10,將其按由小到大將其排列為:
1、2、3、4、5、6、7、8、9、10? ??
那么它的第90%百分位,也就是第9個(gè)數(shù)剛好是9?,那么他的90%Line?就是9?。即90%響應(yīng)時(shí)間是9ms,理解為:90%的用戶請(qǐng)求時(shí)間不沖9ms。
另一測(cè)試結(jié)果,20個(gè)sample,響應(yīng)時(shí)間分別為:
2、2.1、2.5、3、3.4、3.4、4、4、4、4、5、5、5、5.9、5.91、6.8、8、12、24、24.1???按由小到大將其排列。
求它的第90%百分位,第18個(gè)數(shù)是12?么,他的90%Line?就是12。?
二、事務(wù)
1、事務(wù)的組織
計(jì)算機(jī)術(shù)語中,事務(wù)應(yīng)該具有4個(gè)屬性:原子性、一致性、隔離性、持久性。這四個(gè)屬性通常稱為ACID特性。
在性能測(cè)試腳本設(shè)計(jì)中,事務(wù)的設(shè)置至少應(yīng)該遵守原子性,即不可分割性。
如購物事務(wù)一般包括登錄、查找商品、查看商品詳情、加入購物車、結(jié)算幾個(gè)步驟,每個(gè)步驟都缺一不可;
又比如轉(zhuǎn)賬業(yè)務(wù)(A賬戶向B賬戶轉(zhuǎn)出50元),包括A賬戶-50元、B賬戶+50元兩個(gè)步驟,每個(gè)步驟缺一不可。
再比如百度搜索,包括兩步:打開百度首頁,輸入關(guān)鍵字搜索,兩個(gè)步驟組成一個(gè)搜索事務(wù)。
?
常用的場(chǎng)景
1、事務(wù)=單個(gè)請(qǐng)求
2、事務(wù)=思考時(shí)間+單個(gè)請(qǐng)求
3、事務(wù)=多個(gè)相關(guān)聯(lián)的請(qǐng)求
如果事務(wù)中增加思考時(shí)間,運(yùn)行結(jié)果統(tǒng)計(jì)的事務(wù)響應(yīng)時(shí)間是包括思考時(shí)間的,所有場(chǎng)景的設(shè)計(jì),腳本的設(shè)置,對(duì)測(cè)試結(jié)果是有影響的,具體需要根據(jù)需求進(jìn)行設(shè)計(jì)。
2、項(xiàng)目舉例
項(xiàng)目一
需求:測(cè)試一個(gè)系統(tǒng)的TPS
分析:該系統(tǒng)包含多個(gè)功能點(diǎn),選擇主要的功能點(diǎn)進(jìn)行壓測(cè)
設(shè)計(jì):每個(gè)功能點(diǎn)設(shè)計(jì)為一個(gè)事務(wù),每個(gè)事務(wù)包含N個(gè)請(qǐng)求,通過腳本描述。
項(xiàng)目二
需求:有一個(gè)接口,用于跟蹤用戶行為,一旦用戶登錄就上傳用戶的登錄時(shí)間。要求:測(cè)試一下性能看能撐多少用戶同時(shí)在線。
分析:單個(gè)接口(請(qǐng)求)無需事務(wù)概念
項(xiàng)目三
需求:測(cè)試一下某個(gè)電商系統(tǒng)能同時(shí)支持多少用戶下單并購買成功
分析:業(yè)務(wù)是下單并購買,包含多個(gè)請(qǐng)求,需要組織成事務(wù)
三、TPS
1、TPS、TPM、QPS、PV
pv 是指頁面被瀏覽的次數(shù),比如你打開一網(wǎng)頁,那么這個(gè)網(wǎng)站的pv就算加了一次;
tps是每秒內(nèi)的事務(wù)數(shù),比如執(zhí)行了dml操作,那么相應(yīng)的tps會(huì)增加;
tpm是每分鐘的事務(wù)數(shù)。
qps是指每秒內(nèi)查詢次數(shù),比如執(zhí)行了select操作,相應(yīng)的qps會(huì)增加。
不同的應(yīng)用系統(tǒng)tps,qps是沒有可對(duì)比性的。
例如:
應(yīng)用A,每個(gè)select查詢需要1ms, 一個(gè)connection的話,一直不停的執(zhí)行,1S內(nèi) 可執(zhí)行1000次,也就是1000qps
應(yīng)用B,每個(gè)select查詢需要100ms, 一個(gè)connection的話,一直不停的執(zhí)行,1S內(nèi) 可執(zhí)行10次,也就是10qps
上面不同系統(tǒng)的兩個(gè)qps是無法對(duì)比的,不能說哪個(gè)好哪個(gè)壞。
2、TPS的作用
例一 某單個(gè)接口,tps=10,希望這個(gè)接口每天能處理100萬個(gè)請(qǐng)求,問能否滿足? 1)每分鐘處理60*10=600個(gè)請(qǐng)求 2)每小時(shí)處理600*60=36000個(gè)請(qǐng)求 3)每天處理24*36000=864000個(gè)請(qǐng)求 不能滿足需求 例二 希望某個(gè)接口每天能處理200萬個(gè)請(qǐng)求,問TPS至少應(yīng)該達(dá)到多少? 200*0000/24*3600=28 例三 釘釘打開系統(tǒng),9:00上班,8:30-9:00期間打開,一般集中在30分鐘。 公司500人,平均每個(gè)員工打卡1.6次(有人怕沒打上會(huì)再打),算一下TPS多少能支撐目前的應(yīng)用不掛? tps=500*1.6/30*60=0.44 如果是10分鐘以內(nèi)打完卡 tps=500*1.6/10*60=1.3 如果是集中在最后一分鐘 tps=500*1.6/1*60=13 假設(shè)現(xiàn)在一臺(tái)服務(wù)器的tps是7,那么至少需要2臺(tái)服務(wù)器 這兩臺(tái)服務(wù)器平時(shí)都很閑,只有上下班時(shí)才忙,該如何設(shè)計(jì)?(類似的還有新浪微博,流量激增時(shí)可能需要1000臺(tái),平時(shí)500臺(tái)即可) 使用動(dòng)態(tài)擴(kuò)容,熱點(diǎn)警告3、常用的應(yīng)用場(chǎng)景
tps常常是有限制的,如cpu<80%,內(nèi)存<60%時(shí)的tps
cpu使用率和內(nèi)存占用率往往是默認(rèn)的或取經(jīng)驗(yàn)值
| CPU | 內(nèi)存 | 用戶數(shù) | tps | 策略 |
| 已知 | 已知 | 已知 | ? | 按指定用戶數(shù),設(shè)置釋放策略,持續(xù)較長時(shí)間(30分鐘),監(jiān)控CPU、內(nèi)存,取平均tps |
| 默認(rèn) | 默認(rèn) | ? | 已知 | 持續(xù)加壓(增加用戶數(shù))看何時(shí)能達(dá)到目標(biāo)tps,同時(shí)監(jiān)控系統(tǒng)資源 |
| 經(jīng)驗(yàn)值 | 經(jīng)驗(yàn)值 | ? | ? | 什么都不知道的情況下,cpu、內(nèi)存取經(jīng)驗(yàn)值,持續(xù)加壓,看系統(tǒng)的最大tps |
| ? | ? | 不用太多 | ? | 穩(wěn)定性測(cè)試,用戶不用太大,長時(shí)間運(yùn)行(永遠(yuǎn)),監(jiān)控cpu、內(nèi)存、tps |
?
?
?
容量測(cè)試:一般可設(shè)置運(yùn)行1小時(shí)
壓力測(cè)試:一般可設(shè)置10分鐘
穩(wěn)定測(cè)試:7*24小時(shí)、5*24小時(shí)
很不明確的需求:一般測(cè)試最大TPS
4、常見問題
如果某一次測(cè)出的TPS非常小,怎么辦?
可能的原因
1)服務(wù)器處理能力本如此
2)負(fù)載機(jī)的用戶數(shù)沒發(fā)出去,如給10個(gè)用戶,只發(fā)了3個(gè)用戶。如果是這種情況,可以用siege試一下
3)如果這時(shí)的CPU和內(nèi)存占用也很小,可能是網(wǎng)卡滿了
5、性能調(diào)優(yōu)的本質(zhì)
- 拿時(shí)間換空間
- 拿空間換時(shí)間
時(shí)間:響應(yīng)時(shí)間
空間:緩存
三、并發(fā)
1、并發(fā)量怎么理解
測(cè)試計(jì)劃包三個(gè)線程組,分別如下:
線程組1:線程數(shù)200,Ramp-Up Perios200秒——每秒并發(fā)1
線程組2:線程數(shù)200,Ramp-Up Perios100秒——每秒并發(fā)2
線程組3:線程數(shù)200,Ramp-Up Perios10秒——每秒并發(fā)200
測(cè)試計(jì)劃運(yùn)行時(shí)是同時(shí)運(yùn)行的,無delay。
并發(fā)分析
前10秒:200+1+2=203
10秒到100秒:1+2=3
最后100秒:1
第0秒:user1被創(chuàng)建,執(zhí)行所有的samples用了10s,并發(fā)1
第1秒:user2被創(chuàng)建,執(zhí)行所有的samples用了10s,并發(fā)2(user1+user2)
...
0秒——10秒,并發(fā)量遞增1.2.3....10
第10秒:user1執(zhí)行完退出,user11被創(chuàng)建,并發(fā)量10
第11秒:user2執(zhí)行完退出,user12被創(chuàng)建,并發(fā)量10
...
10秒——200秒,并發(fā)量穩(wěn)定保持在10
所以,一個(gè)用戶的存活時(shí)間可以影響并發(fā)。jmeter報(bào)告中一般會(huì)有一個(gè)平均并發(fā)數(shù)
2、實(shí)際案例
某場(chǎng)景要求:100個(gè)用戶,希望每秒并發(fā)數(shù)是100。該怎么做?
(1)100用戶,20s釋放,逐漸加壓
(2)用戶創(chuàng)建后不讓其退出,循環(huán)次數(shù)設(shè)置為永遠(yuǎn)
(3)這樣第20秒時(shí),肯定能達(dá)到100并發(fā),更加精確。
所以如果要精確控制并發(fā)量的話,建議thread不退出(永遠(yuǎn)循環(huán)),通過調(diào)度器設(shè)置運(yùn)行時(shí)間。
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/loveapple/p/10038833.html
總結(jié)
以上是生活随笔為你收集整理的Jmeter中一些概念的理解——90%响应时间、事务、并发的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#中转义字符[转]
- 下一篇: 微信小程序---setData