背景
通過(guò)SpringCloudGateway整合Nacos進(jìn)行負(fù)載均衡和動(dòng)態(tài)路由選擇。由于Nacos的服務(wù)發(fā)現(xiàn)有一定的延遲性,所以在服務(wù)突然掛機(jī)的時(shí)候,QPS較大的情況下,還是會(huì)有部分的請(qǐng)求進(jìn)入到這個(gè)服務(wù)。為了解決這個(gè)問(wèn)題,改寫(xiě)了一點(diǎn)點(diǎn)nacos基于ribbon的負(fù)載選擇,通過(guò)篩選最近響應(yīng)時(shí)間較短的服務(wù)進(jìn)行路由選擇。網(wǎng)關(guān)是一個(gè)項(xiàng)目的命脈,所以便需要進(jìn)行壓測(cè)。
一、前言
壓力測(cè)試是每一個(gè)Web應(yīng)用程序上線之前都需要做的一個(gè)測(cè)試
,他可以幫助我們發(fā)現(xiàn)系統(tǒng)中的瓶頸問(wèn)題
,減少發(fā)布到生產(chǎn)環(huán)境后出問(wèn)題的幾率;預(yù)估系統(tǒng)的承載能力
,使我們能根據(jù)其做出一些應(yīng)對(duì)措施。所以壓力測(cè)試是一個(gè)非常重要的步驟,下面我?guī)Т蠹襾?lái)使用一款壓力測(cè)試工具JMeter。
二、關(guān)于JMeter
Apache JMeter是Apache組織開(kāi)發(fā)的基于Java的壓力測(cè)試工具。用于對(duì)軟件做壓力測(cè)試,它最初被設(shè)計(jì)用于Web應(yīng)用測(cè)試,但后來(lái)擴(kuò)展到其他測(cè)試領(lǐng)域。 它可以用于測(cè)試靜態(tài)和動(dòng)態(tài)資源,例如靜態(tài)文件、Java 小服務(wù)程序、CGI 腳本、Java 對(duì)象、數(shù)據(jù)庫(kù)、FTP 服務(wù)器, 等等。JMeter 可以用于對(duì)服務(wù)器、網(wǎng)絡(luò)或?qū)ο竽M巨大的負(fù)載,來(lái)自不同壓力類別下測(cè)試它們的強(qiáng)度和分析整體性能。另外,JMeter能夠?qū)?yīng)用程序做功能/回歸測(cè)試,通過(guò)創(chuàng)建帶有斷言的腳本來(lái)驗(yàn)證你的程序返回了你期望的結(jié)果。為了最大限度的靈活性,JMeter允許使用正則表達(dá)式創(chuàng)建斷言。
Apache jmeter 可以用于對(duì)靜態(tài)的和動(dòng)態(tài)的資源(文件,Servlet,Perl腳本,java 對(duì)象,數(shù)據(jù)庫(kù)和查詢,F(xiàn)TP服務(wù)器等等)的性能進(jìn)行測(cè)試。它可以用于對(duì)服務(wù)器、網(wǎng)絡(luò)或?qū)ο竽M繁重的負(fù)載來(lái)測(cè)試它們的強(qiáng)度或分析不同壓力類型下的整體性能。你可以使用它做性能的圖形分析或在大并發(fā)負(fù)載測(cè)試你的服務(wù)器/腳本/對(duì)象。
- 官網(wǎng):Apache JMeter - Download Apache JMeter
- 這里我選用了 4.0 版本的二進(jìn)制包:http://mirror.bit.edu.cn/apache//jmeter/binaries/apache-jmeter-4.0.zip
三、準(zhǔn)備工作
-
因?yàn)镴Meter是使用JAVA寫(xiě)的,所以使用JMeter之前,先安裝JAVA環(huán)境,本文就不講安裝JAVA環(huán)境了。主要就是安裝JDK。
-
解壓下載的二進(jìn)制包,進(jìn)入bin目錄,雙擊jmeter.bat啟動(dòng)程序。
啟動(dòng)之后會(huì)有兩個(gè)窗口,一個(gè)cmd窗口,一個(gè)JMeter的 GUI。前面不要忽略CMD窗口的提示信息: -
啟動(dòng)后會(huì)看到JMeter界面,如下:
-
注意看CMD窗口的提示信息:
================================================================================
Don't use GUI mode for load testing !, only for Test creation and Test debugging.
For load testing, use NON GUI Mode:
jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
& increase Java Heap to meet your test requirements:
Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in the jmeter batch file
Check : https://jmeter.apache.org/usermanual/best-practices.html
================================================================================
- 上面的意思就是:不要使用GUI運(yùn)行壓力測(cè)試,GUI僅用于壓力測(cè)試的創(chuàng)建和調(diào)試;執(zhí)行壓力測(cè)試請(qǐng)不要使用GUI。使用下面的命令來(lái)執(zhí)行測(cè)試:
jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
- 并且修改JMeter批處理文件的環(huán)境變量:HEAP=“-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m”;這里根據(jù)你們的配置靈活設(shè)置
- 更改語(yǔ)言為中文
官方默認(rèn)為我們提供了簡(jiǎn)體中文。通過(guò) 【Options】->【Choose Language】變更為簡(jiǎn)體中文
四、創(chuàng)建測(cè)試
4.1、創(chuàng)建線程組
在“測(cè)試計(jì)劃”上右鍵 【添加】–>【Threads(Users)】–>【線程組】
設(shè)置線程數(shù)和循環(huán)次數(shù)。我這里設(shè)置線程數(shù)為500,循環(huán)一次
4.2、配置元件
配置我們需要進(jìn)行測(cè)試的程序協(xié)議、地址和端口
注意:當(dāng)所有的接口測(cè)試的訪問(wèn)域名和端口都一樣時(shí),可以使用該元件,一旦服務(wù)器地址變更,只需要修改請(qǐng)求默認(rèn)值即可
4.3、構(gòu)造HTTP請(qǐng)求
在“線程組”右鍵 【添加-】->【samlper】–>【HTTP 請(qǐng)求】設(shè)置我們需要測(cè)試的API的請(qǐng)求路徑和數(shù)據(jù)。我這里是用的json
4.4、添加HTTP請(qǐng)求頭
在我們剛剛創(chuàng)建的線程組上右鍵 【添加】–>【配置元件】–>【HTTP信息頭管理器】。
因?yàn)槲乙獋鬏數(shù)臄?shù)據(jù)為json,所以設(shè)置一個(gè) Content-Type:application/json
4.5、添加斷言
-
在我們剛剛創(chuàng)建的線程組上右鍵 【添加】–>【斷言】–>【響應(yīng)斷言】。
-
根據(jù)響應(yīng)的數(shù)據(jù)來(lái)判斷請(qǐng)求是否正常。我在這里只判斷的響應(yīng)代碼是否為200。還可以配置錯(cuò)誤信息
4.6、添加察看結(jié)果樹(shù)
-
在我們剛剛創(chuàng)建的線程組上右鍵 【添加】–>【監(jiān)聽(tīng)器】–>【察看結(jié)果樹(shù)】。
-
直接添加,然后點(diǎn)擊運(yùn)行按鈕就可以看到結(jié)果了。
4.7、添加Summary Report
-
在我們剛剛創(chuàng)建的線程組上右鍵 【添加】–>【監(jiān)聽(tīng)器】–>【Summary Report】。
-
直接添加,然后點(diǎn)擊運(yùn)行按鈕就可以看到結(jié)果了。
為了不引起不必要的爭(zhēng)論,隱藏了TPS。此數(shù)據(jù)不具備任何價(jià)值,僅僅為文章演示。
4.8、測(cè)試計(jì)劃創(chuàng)建完成
記得點(diǎn)保存,這時(shí)候會(huì)生成一個(gè)pem的文件
五、執(zhí)行測(cè)試計(jì)劃
前面我們說(shuō)過(guò),執(zhí)行測(cè)試計(jì)劃不能用GUI,需要用命令行來(lái)執(zhí)行。
我這里執(zhí)行的命令為:
jmeter -n -t testplan/RedisLock.jmx -l testplan/result/result.txt -e -o testplan/webreport
- testplan/RedisLock.jmx 為測(cè)試計(jì)劃文件路徑
- testplan/result/result.txt 為測(cè)試結(jié)果文件路徑
- testplan/webreport 為web報(bào)告保存路徑。
- Web報(bào)告如下:
線程數(shù)量和循環(huán)次數(shù)將會(huì)影響最終的測(cè)試報(bào)告,如果服務(wù)器資源有限,注意采用階梯測(cè)試。我下載的5.5版本的jemeter沒(méi)有階梯測(cè)試的插件,選擇5.4.1的有,這里需要注意一下。
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-430931.html
總結(jié)
對(duì)于壓測(cè),需要采取的策略是階梯壓測(cè),然后讓他持續(xù)一段時(shí)間,看看所測(cè)試的服務(wù)是否平滑且正常運(yùn)行。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-430931.html
到了這里,關(guān)于【壓測(cè)】通過(guò)Jemeter進(jìn)行壓力測(cè)試(超詳細(xì))的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!