目錄
引言
一、什么是壓力測(cè)試?
二、什么是分布式測(cè)試?
三、為什么要使用分布式壓力測(cè)試?
四、主流壓力測(cè)試工具對(duì)比
五、Jmeter分布式壓測(cè)原理
六、Jmeter分布式壓測(cè)前的準(zhǔn)備工作
七、阿里云服務(wù)器上進(jìn)行分布式壓測(cè)
八、系統(tǒng)架構(gòu)學(xué)習(xí)
引言
當(dāng)前快速發(fā)展的互聯(lián)網(wǎng)應(yīng)用領(lǐng)域,高效的性能測(cè)試已經(jīng)成為了確保在線應(yīng)用質(zhì)量和用戶滿意度的重要手段之一。
而JMeter分布式壓測(cè)則是實(shí)現(xiàn)這一目標(biāo)的最佳選擇。然而,很多人并不知道如何使用JMeter進(jìn)行分布式壓測(cè),更不知道如何獲取準(zhǔn)確的測(cè)試結(jié)果。
這篇文章將會(huì)向你介紹JMeter分布式壓測(cè)的基本概念、工具和操作步驟,幫助你更加輕松地進(jìn)行高效的性能測(cè)試。還等什么?趕緊跟著我們的案例來學(xué)習(xí)吧!
一、什么是壓力測(cè)試?
壓力測(cè)試(Stress Test),也稱為強(qiáng)度測(cè)試、負(fù)載測(cè)試,屬于性能測(cè)試的范疇。
壓力測(cè)試是模擬實(shí)際應(yīng)用的軟硬件環(huán)境及用戶使用過程的系統(tǒng)負(fù)荷,長(zhǎng)時(shí)間或超大負(fù)荷地運(yùn)行被測(cè)軟件系統(tǒng),來測(cè)試被測(cè)系統(tǒng)的性能、可靠性、穩(wěn)定性等。一定負(fù)載的情況下,長(zhǎng)時(shí)間運(yùn)行被測(cè)軟件系統(tǒng),稱為穩(wěn)定性測(cè)試;超大負(fù)荷地運(yùn)行被測(cè)軟件系統(tǒng)稱為極限壓力測(cè)試。
二、什么是分布式測(cè)試?
分布式測(cè)試是指通過局域網(wǎng)和Internet,把分布于不同地點(diǎn)、獨(dú)立完成特定功能的測(cè)試計(jì)算機(jī)連接起來,以達(dá)到測(cè)試資源共享、分散操作、集中管理、協(xié)同工作、負(fù)載均衡、測(cè)試過程監(jiān)控等目的的計(jì)算機(jī)網(wǎng)絡(luò)測(cè)試。
三、為什么要使用分布式壓力測(cè)試?
普通壓力測(cè)試一般是采用單臺(tái)機(jī)器對(duì)目標(biāo)服務(wù)器產(chǎn)生的壓力,因?yàn)槭芟抻贑PU、內(nèi)存、網(wǎng)絡(luò)、IO等因素的影響,通常只能模擬幾十到幾百用戶的并發(fā)訪問。分布式壓測(cè)是利用多臺(tái)機(jī)器同時(shí)向目標(biāo)服務(wù)器產(chǎn)生壓力,可以模擬幾萬到上億級(jí)別用戶的并發(fā)訪問。
四、主流壓力測(cè)試工具對(duì)比
(1)Webbench:開源,由Lionbridge公司開發(fā),主要測(cè)試每秒鐘請(qǐng)求數(shù)和每秒鐘數(shù)據(jù)傳輸量,同時(shí)支持靜態(tài)、動(dòng)態(tài)、SSL。部署簡(jiǎn)單,靜、動(dòng)態(tài)均可測(cè)試。適用于小型網(wǎng)站壓力測(cè)試(單例最多可模擬3萬并發(fā))。
(2)Apache bench: 開源, Apache自帶的壓力測(cè)試工具,主要用于測(cè)試網(wǎng)站每秒鐘處理請(qǐng)求個(gè)數(shù)。多見用于靜態(tài)壓力測(cè)試,功能較弱,非專業(yè)壓力測(cè)試工具。
(3)Tcpcopy: 開源 ,基于底層應(yīng)用請(qǐng)求復(fù)制,可轉(zhuǎn)發(fā)各種在線請(qǐng)求到測(cè)試服務(wù)器,具有分布式壓力測(cè)試功能,所測(cè)試數(shù)據(jù)與實(shí)際生產(chǎn)數(shù)據(jù)較為接近。主要用于中大型壓力測(cè)試,所有基于 tcp的packets均可測(cè)試。
(4)Loadrunner :付費(fèi)/破解版本, 壓力測(cè)試界的泰斗,可以創(chuàng)建虛擬用戶,可以模擬用戶真實(shí)訪問流程從而錄制成腳本,其測(cè)試結(jié)果也最為逼真。模擬最為逼真,并可進(jìn)行獨(dú)立的單元測(cè)試,但是部署配置較為復(fù)雜,需要專業(yè)人員才可以。
(5)JMeter: 開源免費(fèi), Jmeter 是一款使用Java開發(fā)的,開源免費(fèi)的測(cè)試工具, 主要用來做功能測(cè)試和性能測(cè)試(壓力測(cè)試/負(fù)載測(cè)試).,而且用Jmeter 來測(cè)試 Restful API,非常好用。
(6)WeTest :付費(fèi), 騰訊出品的線上服務(wù)器壓力工具, 最高可模擬億級(jí)并發(fā),可實(shí)時(shí)查看性能數(shù)據(jù)報(bào)表,提供專家級(jí)性能優(yōu)化建議。我們通常要分析的性能數(shù)據(jù),如TPS,在線用戶數(shù),事務(wù)數(shù),網(wǎng)絡(luò)帶寬,吞吐量,CPU,內(nèi)存,磁盤IO等,報(bào)告里都有。
(7)PTS:付費(fèi), 阿里云出品的PTS(Performance Testing Service)是面向所有技術(shù)相關(guān)背景人員的云化性能測(cè)試工具,有別于傳統(tǒng)工具的繁復(fù),PTS以互聯(lián)網(wǎng)化的交互,面向分布式和云化的設(shè)計(jì),更適合當(dāng)前的主流技術(shù)架構(gòu)。無論是自研還是適配開源的功能,PTS都可以輕松模擬大量用戶訪問業(yè)務(wù)的場(chǎng)景,任務(wù)隨時(shí)發(fā)起,免去搭建和維護(hù)成本。更是緊密結(jié)合監(jiān)控類產(chǎn)品提供一站式監(jiān)控、定位等附加價(jià)值,高效檢驗(yàn)和管理業(yè)務(wù)性能。
五、Jmeter分布式壓測(cè)原理
(1)先了解幾個(gè)專業(yè)術(shù)語
控制器節(jié)點(diǎn)(Controller Node),又叫Master:運(yùn)行 JMeter GUI 的系統(tǒng),它控制測(cè)試。
工作節(jié)點(diǎn)(Worker Nodes),又叫Slave:運(yùn)行jmeter-server的系統(tǒng),它從 GUI 接收命令并將請(qǐng)求發(fā)送到目標(biāo)系統(tǒng)。
目標(biāo)(Target):計(jì)劃進(jìn)行測(cè)試的網(wǎng)絡(luò)服務(wù)器。
(2)原理:控制器節(jié)點(diǎn)啟動(dòng)時(shí)將壓測(cè)腳本分發(fā)到各個(gè)工作節(jié)點(diǎn)上,然后通過遠(yuǎn)程啟動(dòng)各個(gè)工作節(jié)點(diǎn),共同向目標(biāo)服務(wù)器發(fā)送請(qǐng)求(產(chǎn)生壓力)。測(cè)試結(jié)束以后,各個(gè)工作節(jié)點(diǎn)主動(dòng)將壓測(cè)數(shù)據(jù)回傳給控制器節(jié)點(diǎn),由控制器節(jié)點(diǎn)統(tǒng)一匯總數(shù)據(jù),并輸出測(cè)試報(bào)告。
注意兩點(diǎn):
(1)master和各個(gè)slave機(jī)器必須使用同一局域網(wǎng),盡可能減少網(wǎng)絡(luò)帶寬的影響。
(2)使用非GUI模式,避免不必要的cpu、內(nèi)存損耗。
六、Jmeter分布式壓測(cè)前的準(zhǔn)備工作
(1)確保master和各個(gè)slave上使用相同版本的JMeter 和 Java?;旌习姹緦o法正常工作。
(2)master和各個(gè)slave的防火墻已關(guān)閉或打開了正確的端口,且端口未被占用。
(3)master和各個(gè)slave上安裝的殺毒軟件已關(guān)閉。
(4)master和各個(gè)slave在同一個(gè)子網(wǎng)內(nèi),盡量減少網(wǎng)絡(luò)帶寬的影響,減少時(shí)延問題。如果是多網(wǎng)卡環(huán)境需要保證啟動(dòng)的網(wǎng)卡都在同一個(gè)網(wǎng)段。
(5)確保 JMeter 可以訪問服務(wù)器,可以使用ping命令查看。
(6)已經(jīng)為 RMI 設(shè)置了 SSL或禁用了它。
(7)master和各個(gè)slave上安裝Jmeter全部啟動(dòng)成功。
(8)如果壓測(cè)腳本有依賴的測(cè)試數(shù)據(jù),測(cè)試數(shù)據(jù)文件需要復(fù)制一份到Worker Nodes上,且文件路徑必須Controller Node中一致。
(9)如果使用云服務(wù)器進(jìn)行壓測(cè),一定要使用內(nèi)網(wǎng)IP,不能使用公網(wǎng)IP,先使用ping命令檢查網(wǎng)絡(luò)是否通暢。
(10)壓力測(cè)試瓶頸大都在帶寬上面,需要保證slave的帶寬要比Target的帶寬高,不然壓力上不去。
七、阿里云服務(wù)器上進(jìn)行分布式壓測(cè)
1、使用SpringBoot接口打包,并用jar包方式部署
(1)打包
(2)啟動(dòng)jar包
2、阿里云linux服務(wù)器下安裝啟動(dòng)jdk8并配置環(huán)境變量
3、部署Java項(xiàng)目到阿里元服務(wù)器,守護(hù)進(jìn)程講解
守護(hù)進(jìn)程也稱精靈進(jìn)程(Daemon),是運(yùn)行在后臺(tái)的一種特殊進(jìn)程。它獨(dú)立于控制終端并且周期性地執(zhí)行某種任務(wù)或等待處理某些發(fā)生的事件。它不受用戶登錄注銷的影響,它們一直在運(yùn)行著。
4、阿里云liunx服務(wù)器上安裝Jmeter
下載:wget?https://archive.apache.org/dist/jmeter/binaries/apache-jmeter-5.1.tgz
解壓:tar -zxvf?apache-jmeter-5.1.tgz
?
拓展:
5、Jmeter非GUI界面參數(shù)講解
FileZilla是一個(gè)免費(fèi)開源的適合Windows、Mac和Linux的FTP客戶端軟件。FileZilla特點(diǎn)是:免費(fèi)、跨平臺(tái)、易用、下載速度非常快、功能齊全。
6、項(xiàng)目實(shí)戰(zhàn)之阿里云linux服務(wù)器下非GUI界面執(zhí)行Jmeter壓測(cè)腳本
(1)Jmeter可視化界面開發(fā)壓測(cè)腳本
(2)導(dǎo)出壓測(cè)腳本linux_users_api.jmx保存在本地
(3)使用FileZilla工具將本地腳本上傳到阿里云服務(wù)器上Jmeter安裝路徑的bin目錄下
(4)執(zhí)行壓測(cè)腳本,查看日志:
7、Jmeter壓測(cè)實(shí)戰(zhàn)之jtl文件(壓測(cè)結(jié)果文件)生成和查看
(1)使用FileZilla工具將阿里云服務(wù)器上的result.jtl文件下載到本地(直接拖拽到本地桌面)
(2)在本地打開Jmeter工具,Thread Group—>Add Listener—>Summary Report
(3)點(diǎn)擊【Browse】,選擇下載到本地桌面的result.jtl文件,打開。
8、Jmeter壓測(cè)接口的性能優(yōu)化
官網(wǎng)文檔說明如下:
翻譯下就是:
(1)使用非GUI模式:jmeter -n -t test.jmx -l test.jtl
(2)盡可能少低使用監(jiān)聽器,如果在監(jiān)聽器之前使用-l 標(biāo)志,可以刪除或禁用它們。
(3)在負(fù)載測(cè)試期間不要使用“查看結(jié)果樹”或“聚合報(bào)告”監(jiān)聽器,僅在腳本編寫階段使用它們來調(diào)試腳本。
(4)不要使用大量類似的取樣器,而是在循環(huán)中使用相同的取樣器,并使用變量(CSV數(shù)據(jù)集)來改變樣本。[此處包含控制器沒有幫助,因?yàn)樗鼘⑽募械乃袦y(cè)試元素添加到測(cè)試計(jì)劃中。
(5)不要使用功能模式。
(6)使用CSV輸出而不是XML。
(7)只保存您需要的數(shù)據(jù)。
(8)使用盡可能少的斷言。
(9)使用性能最好的腳本語言(請(qǐng)參閱JSR223部分)
(10)如果您的測(cè)試需要大量數(shù)據(jù)(特別是需要隨機(jī)數(shù)據(jù)),請(qǐng)?jiān)诳梢允褂肅SV數(shù)據(jù)集讀取的文件中創(chuàng)建測(cè)試數(shù)據(jù)。這避免了在運(yùn)行時(shí)浪費(fèi)資源。
9、Jmeter壓測(cè)生成多維度圖形化壓測(cè)報(bào)告
(1)進(jìn)度到bin目錄下,執(zhí)行上述指令,路徑按自己實(shí)際情況來。
(2)將result目錄打包成,result.tar.gz
(3)使用FileZilla工具下載本地解壓
(4)找到index.html文件后,拖拽到瀏覽器中打開。
10、Jmeter圖形化壓測(cè)報(bào)告dashboard講解
11、Jmeter圖形化壓測(cè)報(bào)告Charts講解
12、阿里云Jmeter分布式壓測(cè)常見問題處理
?
13、阿里云Jmeter分布式壓實(shí)戰(zhàn)
?
八、系統(tǒng)架構(gòu)學(xué)習(xí)
最后感謝每一個(gè)認(rèn)真閱讀我文章的人,看著粉絲一路的上漲和關(guān)注,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走:
些資料,對(duì)于【軟件測(cè)試】的朋友來說應(yīng)該是最全面最完整的備戰(zhàn)倉庫,這個(gè)倉庫也陪伴上萬個(gè)測(cè)試工程師們走過最艱難的路程,希望也能幫助到你!文章來源:http://www.zghlxwxcb.cn/news/detail-480254.html
在我的QQ技術(shù)交流群里(技術(shù)交流和資源共享,廣告勿擾)文章來源地址http://www.zghlxwxcb.cn/news/detail-480254.html
到了這里,關(guān)于如何進(jìn)行JMeter分布式壓測(cè)?一個(gè)案例教你詳細(xì)解讀!的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!