JMeter压测笔记
每個(gè)資深測(cè)試工程師,必須掌握的測(cè)試工具,熟練使用Jmeter能大大提高工作效率。熟練使用Jmeter后, 能用Jmeter搞定的事情,你就不會(huì)使用LoadRunner了。Jmeter 是一款使用Java開發(fā)的,開源免費(fèi)的,測(cè)試工具, 主要用來(lái)做功能測(cè)試和性能測(cè)試(壓力測(cè)試/負(fù)載測(cè)試). 而且用Jmeter 來(lái)測(cè)試 Restful API, 非常好用。
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? From?Jmeter中文官網(wǎng)
本文是Jmeter操作筆記,
本文是Jmeter操作筆記,
本文是Jmeter操作筆記。
【前文從理論角度對(duì)比了lock鎖(Monitor)與讀寫鎖(ReadWriteLockSlim)的差異和使用場(chǎng)景,嘗試用Jmeter對(duì)lock、ReadWriteLockSlim壓測(cè)】
啟動(dòng)Jmeter
通過點(diǎn)擊jmeter解壓目錄.\apache-jmeter-5.4.1\apache-jmeter-5.4.1\bin\jmeter.bat 啟動(dòng)jmeter,
上圖有一個(gè)默認(rèn)的測(cè)試計(jì)劃,沒有任何內(nèi)容。
線程組
線程組元件是任何測(cè)試計(jì)劃的開始點(diǎn),可以配置要模擬的用戶數(shù),所有的任務(wù)都是基于線程組。
右鍵單擊(Test Plan)>Add> Threads(Users)>Thread Group, 將添加線程組。
區(qū)域一:在采樣失敗后怎么處理?
Continue:繼續(xù)執(zhí)行接下來(lái)的操作;
Start Next Thread Loop:開始下一次循環(huán);
Stop Thread:停止線程,退出該線程(不再執(zhí)行此線程的操作);
Stop Test:等待當(dāng)前執(zhí)行的采樣器結(jié)束后,結(jié)束整個(gè)測(cè)試;
Stop Test Now:馬上停止測(cè)試;
區(qū)域二:線程屬性
Number of Threads(users): 線程數(shù),相當(dāng)于模擬的用戶數(shù)量;
Ramp-up Period(in seconds): 達(dá)到指定線程需要的時(shí)間,如果線程數(shù)是10, 時(shí)間設(shè)定為1s, 就是1s內(nèi)嘗試加載10個(gè)線程;
未指定ramp-up period ,也就是說ramp-up period為0,JMeter 將立即建立所有線程。
Loop Count:循環(huán)次數(shù),如果選擇[Forever]則一直執(zhí)行下去,直到手動(dòng)停止。
旁白: ?在某R周期內(nèi)啟動(dòng)了N個(gè)線程數(shù), 進(jìn)行了L次這樣的周期測(cè)試。
請(qǐng)求次數(shù)= 線程數(shù) * 循環(huán)次數(shù)
Duration:整個(gè)壓測(cè)的時(shí)長(zhǎng)
添加采樣器
此次我們主要測(cè)試 [多讀少寫]的場(chǎng)景,故我們添加http請(qǐng)求采樣器。
在特定線程組右鍵>Add>Sampler>Http Request:
基本使用方式,一點(diǎn)就通。
添加偵聽器
通過偵聽器 監(jiān)聽采樣結(jié)果:線程組右鍵>Add>Listener>[****],
這里添加幾個(gè)有效常見的偵聽器:View Results Tree、Summary Report、Aggregate Report、Aggregate Graph
壓測(cè)過程
在一個(gè)線程組內(nèi)的線程是依次執(zhí)行的,我們建立兩個(gè)線程組分別測(cè)試
(讀寫比1:1)
| http://localhost:5000/rwlock?key=aa&value=ss | 1 |
| http://localhost:5000/rwlock?key=aa&value=ssss | 1 |
| http://localhost:5000/monitorlock?key=aa&value=ss | 1 |
| http://localhost:5000/monitorlock?key=aa&value=ssss | 1 |
(讀寫比10:1)
Label :各個(gè)模擬測(cè)試的名稱
Samples :各個(gè)測(cè)試的樣本總數(shù)
Average :每個(gè)請(qǐng)求的平均響應(yīng)時(shí)間
Median :中值,即50%請(qǐng)求的平均響應(yīng)時(shí)間
90%Line :90%請(qǐng)求的響應(yīng)時(shí)間
Min :最小響應(yīng)時(shí)間
Max :最大的響應(yīng)時(shí)間
Error% :錯(cuò)誤響應(yīng)的概率,即無(wú)法響應(yīng)的概率
ThroughPut :吞吐量 – 默認(rèn)情況下表示每秒完成的請(qǐng)求數(shù)(Request per Second)。
KB/Sec :每秒從服務(wù)器端接收到的數(shù)據(jù)量。
貌似性能基本沒差異,====》 到Stack Overflow走一圈,? ? 類似問題
https://stackoverflow.com/questions/4217398/when-is-readerwriterlockslim-better-than-a-simple-lock
There's no contention in this program. The Get and Add methods execute in a few nanoseconds. The odds that multiple threads hit those methods at the exact time are vanishingly small.
這個(gè)壓測(cè)中沒有爭(zhēng)用,_dict.TryGetValue 是o(1)的復(fù)雜度,速度很塊,多個(gè)線程在某時(shí)刻命中這個(gè)方法的概率極小,整個(gè)api代碼塊耗時(shí)幾納秒,壓測(cè)結(jié)果12ms,絕大部分都是在網(wǎng)絡(luò)上,?貌似要寫代碼測(cè)試了。
真是一個(gè)悲傷的故事,本文最終淪落為#JMeter操作筆記#。
筒靴們有其他意見或者想法,請(qǐng)留言賜教。??
源碼地址?https://github.com/zaozaoniao/RWLOCKTest
?性感豹紋
??多線程環(huán)境下,程序真是危機(jī)四伏
??面試官:平時(shí)開發(fā)中你用過讀寫鎖嗎?
??你管這叫"線程安全"?
?面試官:實(shí)現(xiàn)一個(gè)帶值變更通知能力的Dictionary
??如何主動(dòng)清空.NET數(shù)據(jù)庫(kù)連接池?
??.Net線程同步技術(shù)解讀
點(diǎn)“贊”戳“在看”
體現(xiàn)態(tài)度很有必要!
總結(jié)
以上是生活随笔為你收集整理的JMeter压测笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用zipKin构建NetCore分布式
- 下一篇: WTM框架使用技巧之:CI/DI(持续集