jmeter命令行运行-分布式测试
jmeter命令行運行-分布式測試
上一篇文章我們說到了jmeter命令行運行但是是單節(jié)點下的,?jmeter底層用java開發(fā),耗內(nèi)存、cpu,如果項目要求大并發(fā)去壓測服務(wù)端的話,jmeter單節(jié)點難以完成大并發(fā)的請求,這時就需要對jmeter進行分布式測試:
1:先說說分布式測試原理
處理過程:
一:調(diào)度機master啟動以后,會拷貝本地的jmx文件分發(fā)到遠程的slave機器上;
二:slave機器拿到腳本以后啟動命令行模式去執(zhí)行腳本,對于每臺slave機器拿到的腳本都是一樣的,所以如果jmx腳本為50個線程跑3分鐘,那么實際并發(fā)就是50*3=150個線程并發(fā)跑3分鐘;
三:執(zhí)行時,slave會把執(zhí)行獲得的數(shù)據(jù)結(jié)果傳給master機器,master機器會收集所有slave機器的信息并匯總,這樣master機器上就存在一份所有slave機器匯總的數(shù)據(jù)結(jié)果。
?
注意事項:
一:我們注意到master機器啟動后會拷貝jmx文件到slave機器,所以我們不需要在每臺slave機器上也上傳一份jmx,只需要在master機器上上傳一份jmx腳本即可。
二:參數(shù)化文件:如果使用csv進行參數(shù)化,那么需要把參數(shù)文件在每臺slave上拷一份且路徑需要設(shè)置成一樣的。
三:調(diào)度機(master)和執(zhí)行機(slave)最好分開,由于master需要發(fā)送信息給slave并且會接收slave回傳回來的測試數(shù)據(jù),所以mater自身會有消耗,所以建議單獨用一臺機器作為master。
四:保證每臺機器的jmeter版本和插件版本相同,避免造成一些意外問題。
五:分布式測試總樣本數(shù) = 線程數(shù) * 循環(huán)次數(shù) * 執(zhí)行機總數(shù),?樣本計數(shù)邏輯為:執(zhí)行機slave執(zhí)行的測試腳本是由調(diào)度機master分發(fā)的,故每臺執(zhí)行機執(zhí)行的測試腳本都是相同的,故而性能測試總樣本數(shù) = 測試腳本樣本數(shù) * 執(zhí)行機總數(shù),而測試腳本樣本數(shù)為線程數(shù) * 循環(huán)次數(shù)
?
2:說完了原理,現(xiàn)在我們來說如何做jmeter分布式測試
- 在所有需要做分布式的機器上部署java和jmeter,要求需要保證每臺機器上部署的jmeter版本相同插件版本也相同,最好部署在同一路徑下(這樣如果有csv參數(shù)化比較方便)
部署jmeter很簡單,只需從官網(wǎng)下載相應(yīng)版本然后傳到服務(wù)器上進行解壓縮就可以了這里給出我的云盤地址:http://pan.baidu.com/s/1bI3r2I 密碼:f5ll。
比如我部署在134.64.14.95、134.64.14.96、134.64.14.97、134.64.14.98四臺機器上,每臺機器部署路徑為:/home/tester
?
- 修改slave機器bin目錄下的jmeter.properties配置,我的3臺slave機器為:134.64.14.96、134.64.14.97、134.64.14.98
修改3臺slave機器jmeter/bin目錄下的jmeter.properties中server_port端口號為機器未被占用的端口號,一般默認為1099,此處我修改為7899(可以使用默認端口或者改成其他端口,只要未被占用就行),remote_hosts為127.0.0.1不需要修改
修改完成保存,我配置的3臺機器為:
134.64.14.96機器(remote_hosts:127.0.0.1、server_port:7899)
134.64.14.97機器(remote_hosts:127.0.0.1、server_port:7899)
134.64.14.98機器(remote_hosts:127.0.0.1、server_port:7899)
?
- 完成slave機器的配置后,此時配置master機器,我的1臺master機器為134.64.14.95
注意到由于master機器作為調(diào)度機本身會有一定的性能消耗所以我們配置遠程執(zhí)行機的時候并沒有把master機器配置進去,只配置了3臺執(zhí)行機
修改完成保存,我配置的1臺機器為:
134.64.14.95機器(remote_hosts:134.64.14.96:7899,134.64.14.97:7899,134.64.14.98:7899、server_port:注釋掉不用打開)
?
- ?完成了所有機器配置后,我們需要上傳測試腳本,測試時只需要上傳jmx文件到master機器即134.64.14.95機器的jmeter對應(yīng)目錄即可,其他執(zhí)行機不需要上傳jmx文件,因為master啟動后會拷貝本地jmx到遠程執(zhí)行機上
?
- 現(xiàn)在我們來啟動分布式測試,啟動分布式測試分兩步:
一:首先啟動執(zhí)行機即slave機器134.64.14.96、134.64.14.97、134.64.14.98,每臺slave機器都需要執(zhí)行以下命令來啟動jmeter-server
命令為:./jmeter-server
?
二:確認3臺slave執(zhí)行機都啟動正確完成后,在啟動master機器134.64.14.95,執(zhí)行如下命令開啟分布式測試
命令為:./jmeter -n -t baidu_requests_results.jmx -r?-l baidu_requests_results.jtl
?
3:測試命令說明
?./jmeter -n -t baidu_requests_results.jmx?-r?-l baidu_requests_results.jtl?
n表示無GUI運行 t表示要運行的jmx文件 l指生成的文件名稱 r指遠程將所有agent啟動4:測試結(jié)果說明
注意到上面控制臺打印的信息中
summary +?? 5504 in 00:00:02 = 3590.3/s Avg:???? 1 Min:???? 0 Max:?? 174 Err:? 5504 (100.00%) Active: 59 Started: 58 Finished: 0summary + 1224043 in 00:00:30 = 40802.8/s Avg:???? 0 Min:???? 0 Max:?? 188 Err: 1224043 (100.00%) Active: 60 Started: 59 Finished: 0 summary = 1229547 in 00:00:32 = 38989.9/s Avg:???? 0 Min:???? 0 Max:?? 188 Err: 1229547 (100.00%) 解析: summary為請求數(shù)目,指在多少時間內(nèi)增加了多少請求數(shù)目,由此算出后面的3590.3/s、40802.8/s、38989.9/s也就是每秒完成請求數(shù)(吞吐量),每隔一段時間打印一行,最后一行可以看到請求總數(shù)為8213739,平均吞吐量為45495.4/s(每秒完成請求數(shù)) summary = 8213739 in 00:03:01 = 45495.4/s Avg:???? 0 Min:???? 0 Max:?? 191 Err: 8213739 (100.00%) 另外active:60指活躍線程數(shù),我們用3臺機器并發(fā)測試,每臺運行的腳本都為20個線程3分鐘,所以在線活躍線程數(shù)為20*3=60個,運行時間為3分鐘 錯誤率為:可以看出服務(wù)器能否承受這么大的并發(fā),這里都是100%報錯是由于同一ip短時間并發(fā)請求百度,百度是不允許的,所以會被拒絕發(fā)生報錯 當然我們除了看控制臺的信息以外,性能測試還需要關(guān)注:所有測試機器以及被測試機器的服務(wù)器指標如:cpu、磁盤io、內(nèi)存消耗等,以及服務(wù)端和客戶端日志信息 對于生成的jtl文件,我們可以進行解析生成我們關(guān)注的信息如:吞吐量、響應(yīng)時間、點擊率、錯誤率等等 對于jtl文件的如何轉(zhuǎn)換成圖表及解析,在我的博客jmeter系列博文之-jmeter之jtl測試報告中有詳細說明?
轉(zhuǎn)載于:https://www.cnblogs.com/AmilyWilly/p/9010181.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的jmeter命令行运行-分布式测试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到很多老鼠是什么意思
- 下一篇: java开发区块链只需150行代码