壓測(cè)工具之JMeter講解使用

1 JMeter

1.1 引言

在日常開(kāi)發(fā)中,當(dāng)完成一個(gè)接口開(kāi)發(fā)時(shí),需要對(duì)接口進(jìn)行準(zhǔn)確性測(cè)試,比如PostMan、Swagger等,但在接口上線運(yùn)行前對(duì)其進(jìn)行性能測(cè)試是很有必要的,就是所謂的接口壓力測(cè)試。

壓力測(cè)試就是考察當(dāng)前軟硬件環(huán)境下系統(tǒng)所能承受的最大負(fù)荷,并借助結(jié)果找出系統(tǒng)瓶頸所在。使用壓力測(cè)試可以找到更難發(fā)現(xiàn)的問(wèn)題,比如:內(nèi)存泄漏,并發(fā)和同步
有效的壓力測(cè)試系統(tǒng)將應(yīng)用一下這些關(guān)鍵條件:重復(fù)、并發(fā)、量級(jí)、隨機(jī)變化。

1.2 壓力測(cè)試指標(biāo)

壓力測(cè)試指標(biāo):

  • 響應(yīng)時(shí)間(Response Time : RT
    響應(yīng)時(shí)間指用戶(hù)從客戶(hù)端發(fā)起一個(gè)請(qǐng)求開(kāi)始,到客戶(hù)端接收到從服務(wù)器端返回的響應(yīng)結(jié)束,整個(gè)過(guò)程所耗費(fèi)的時(shí)間,下面熟悉一下結(jié)果名詞:
    • HPS(Hits Per Second):每秒點(diǎn)擊次數(shù),單位是次/秒
    • TPS(Transaction Per Second):系統(tǒng)每秒處理交易數(shù),單位是筆/秒
    • QPS(Query Per Second):系統(tǒng)每秒處理查詢(xún)次數(shù),單位是次/秒
  • 最大響應(yīng)時(shí)間(Max Response Time):指用戶(hù)發(fā)出請(qǐng)求或者指令到系統(tǒng)做出反應(yīng)(響應(yīng))的最大時(shí)間
  • 最少響應(yīng)時(shí)間(Mininum Response Time):指用戶(hù)發(fā)出請(qǐng)求或者指令到系統(tǒng)做出反應(yīng)(響應(yīng))的最少時(shí)間
  • 90%響應(yīng)時(shí)間(90% Response Time):是指所有用戶(hù)的響應(yīng)時(shí)間進(jìn)行排序,第90%的響應(yīng)時(shí)間

對(duì)于互聯(lián)網(wǎng)業(yè)務(wù),某些業(yè)務(wù)有且僅有一個(gè)請(qǐng)求連接,那么TPS=QPS=HPS,一般情況下,用TPS來(lái)衡量整個(gè)業(yè)務(wù)流程,用QPS來(lái)衡量接口查詢(xún)次數(shù),用HPS來(lái)表示對(duì)服務(wù)器單擊請(qǐng)求。無(wú)論TPS、QPS、HPS,此指標(biāo)是衡量系統(tǒng)處理能力非常重要的指標(biāo),越大越好。

一般情況下:

金融行業(yè):1000TPS~50000TPS,不包括互聯(lián)網(wǎng)化的活動(dòng)
保險(xiǎn)行業(yè):100TPS~1000000TPS,不包括互聯(lián)網(wǎng)化的活動(dòng)
制造業(yè):10TPS~5000TPS
互聯(lián)網(wǎng)電子商務(wù):10000TPS~10000000TPS
互聯(lián)網(wǎng)中型網(wǎng)站:1000TPS~50000TPS
互聯(lián)網(wǎng)小型網(wǎng)站:500TPS~10000TPS

性能測(cè)試主要關(guān)注如下三個(gè)指標(biāo):

  • 吞吐量:每秒鐘系統(tǒng)能夠處理的請(qǐng)求數(shù)、任務(wù)數(shù),該值越大越好
  • 響應(yīng)時(shí)間:服務(wù)處理一個(gè)請(qǐng)求或一個(gè)任務(wù)的耗時(shí)
  • 錯(cuò)誤率:一批請(qǐng)求中結(jié)果出錯(cuò)的請(qǐng)求所占比例

1.3 JMeter工具使用

1.3.1 JMeter安裝

官網(wǎng): https://jmeter.apache.org/

image.png

需要注意的是:JMeter5.3版本要求Java8以上版本

將下載的壓縮包解壓后,進(jìn)入到bin目錄中,雙擊執(zhí)行 jmeter.bat,會(huì)進(jìn)入到下面這個(gè)頁(yè)面。

1.3.2 切換成中文

選項(xiàng) > 選擇語(yǔ)言 > 中文


image.png

1.3.3 添加線程組

添加線程組,創(chuàng)建模擬多少個(gè)并發(fā)用戶(hù)


image.png

1.3.4 添加HTTP請(qǐng)求

創(chuàng)建完線程組后,再添加http請(qǐng)求,表示要對(duì)哪個(gè)接口進(jìn)行測(cè)試


image.png
image.png

1.3.5 添加監(jiān)聽(tīng)器

為需要壓測(cè)的http請(qǐng)求添加監(jiān)聽(tīng)器,用戶(hù)生成測(cè)試結(jié)果


image.png
image.png

1.3.6 自動(dòng)壓測(cè)

image.png

1.4 JMeter Address Already in use 錯(cuò)誤解決

這個(gè)問(wèn)題是Windows本身提供的端口訪問(wèn)機(jī)制引發(fā)的,Windows提供給TCP/IP鏈接的端口為1024-5000,并且要四分鐘來(lái)循環(huán)回收它們,這樣會(huì)導(dǎo)致我們?cè)谳^短時(shí)間內(nèi)跑大量的請(qǐng)求時(shí)將端口占滿了。

解決方法:
cmd中,用regedit命令打開(kāi)注冊(cè)表,在HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Tcpip\Parameters

  • 右擊parameters,添加兩個(gè)新的DWORD,名字為MaxUserPortTCPTimedWaitDelay
  • 然后雙擊MaxUserPort,輸入數(shù)值數(shù)據(jù)為65534(十進(jìn)制),如果是分布式運(yùn)行的話,控制機(jī)器和負(fù)載機(jī)器都需要這樣操作
  • TCPTimedWaitDelay 30(十進(jìn)制),表示把端口回收時(shí)間從4分鐘,改為30秒

修改配置完畢之后,記得重啟機(jī)器才會(huì)生效

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容