JMeter中分布式測(cè)試時(shí),本地?zé)o法承載時(shí)如何操作?
發(fā)布時(shí)間:2019-03-05 10:48 發(fā)布作者:admin 瀏覽次數(shù):
對(duì)于并發(fā)量很大的需求,如上萬(wàn)并發(fā)量,受到CPU和內(nèi)存的限制,單機(jī)模仿場(chǎng)景是完成不了的,為了讓JMeter供給更大的負(fù)載能力,須運(yùn)用它的分布式機(jī)制,即多臺(tái)機(jī)器同時(shí)發(fā)生負(fù)載的功用。
特色:
1.實(shí)在的性能測(cè)驗(yàn),不存在網(wǎng)絡(luò)瓶頸問(wèn)題
2.GUI僅限windows平臺(tái),命令行可在linux與windows
3.測(cè)驗(yàn)成果保存在本地一臺(tái)master上
4.運(yùn)用這臺(tái)master辦理多個(gè)Jmeter Engines,也叫做slave
5.測(cè)驗(yàn)?zāi)_本會(huì)被master主動(dòng)發(fā)送到作為負(fù)載生成器的slave,但數(shù)據(jù)文件不會(huì)
在進(jìn)行分布式平臺(tái)測(cè)驗(yàn)的時(shí)分,要最好留意以下幾點(diǎn):
1.master也能夠同時(shí)作slave,但要留意負(fù)載適量
2.一切負(fù)載生成器slave上裝置相同的jmeter與jdk
3.防火墻和殺毒軟件要關(guān)閉或過(guò)濾
4.保證一切master與slave在同一個(gè)網(wǎng)段或子網(wǎng),沒(méi)有網(wǎng)絡(luò)推遲
5.master與slave能夠是windows或linux,不必悉數(shù)是同一個(gè)OS,但要敞開(kāi)防火墻,不然connect fail
6.腳本運(yùn)用的數(shù)據(jù)文件(比方CSV)需求單獨(dú)傳到每個(gè)slave,而且腳本中指定的文件途徑要能夠在每個(gè)slave找到該文件,常運(yùn)用相對(duì)途徑,較方便
7. 保證jmeter能夠拜訪服務(wù)器
8. 保證各個(gè)jmeter版別一致,不同版別可能會(huì)存在協(xié)同問(wèn)題
一、Jmeter分布式履行原理:
1、Jmeter分布式測(cè)驗(yàn)時(shí),挑選其中一臺(tái)作為調(diào)度機(jī)(master),其它機(jī)器做為履行機(jī)(slave)。
2、履行時(shí),master會(huì)把腳本發(fā)送到每臺(tái)slave上,slave 拿到腳本后就開(kāi)端履行,slave履行時(shí)不需求發(fā)動(dòng)GUI,我了解它應(yīng)該是經(jīng)過(guò)命令行形式履行的。
3、履行完成后,slave會(huì)把成果回傳給master,master會(huì)收集一切slave的信息并匯總。
一、履行機(jī)(slave)裝備:
1、slave機(jī)上需求裝置Jmeter 和 支撐當(dāng)前Jmeter版別的JDK。(有時(shí)在運(yùn)行Jmeter時(shí)會(huì)提示JDK版別過(guò)低)
2、增加環(huán)境變量:JMETER_HOME途徑為bin目錄的上一級(jí)目錄,這樣發(fā)動(dòng)jmeter-server服務(wù)時(shí),就只會(huì)看到Found ApacheJMeter_core.jar
3、發(fā)動(dòng)bin目錄下的:jmeter-server.bat,發(fā)動(dòng)成功如下圖。(jmeter 的裝置途徑不要包括空格,因?yàn)閖meter-server.bat不支撐含空格的文件夾途徑。)
4、上圖上標(biāo)紅的IP和端口會(huì)在master里裝備時(shí)用到。IP就是slave機(jī)器IP,端口默許是1099,端口也能夠自定義,這兒我自定義為1000。
5、多臺(tái)slave的話,重復(fù)1~4步驟就好。
三、調(diào)度機(jī)(master)裝備:
1、腳本:簡(jiǎn)單的一個(gè)拜訪百度的腳本:
2、翻開(kāi)Jmeter的bin目錄下jmeter.properties文件,修正如下裝備IP和Port是slaver機(jī)的IP以及默許的1099端口,一下兩種裝備辦法都能夠。
remote_hosts=172.16.xx.xx,172.16.xx.xxx
remote_hosts=172.16.xx.xx:1099,172.16.xx.xxx:1099
多臺(tái)slave之前用 "," 隔開(kāi)。
修正如下裝備,這兒端口我自定義為100:
remote_hosts=10.13.223.202:1000,10.13.225.12:1000
我這裝備了2臺(tái),能夠看到標(biāo)紅的這個(gè)就是上面截圖slave的IP和Port.
3、翻開(kāi)Jmeter,挑選運(yùn)行,有運(yùn)程發(fā)動(dòng)、運(yùn)程悉數(shù)發(fā)動(dòng)兩個(gè)選項(xiàng):
4、挑選長(zhǎng)途發(fā)動(dòng)-->10.13.225.12:1000
a) master成果,這兒我只發(fā)動(dòng)了10.13.225.12:1000這一臺(tái)slave,所以只要一個(gè)成果(線程數(shù)和循環(huán)次數(shù)都是1):
b) slave控制臺(tái)信息:
5、挑選長(zhǎng)途發(fā)動(dòng)-->長(zhǎng)途悉數(shù)發(fā)動(dòng):
a) master成果,悉數(shù)發(fā)動(dòng),我裝備了2臺(tái)slave,所以有兩次履行成果:
四、自定義端口:
怎么自定義slave端口:
1、slave:在slave機(jī)的Jmeter的bin目錄下,找到j(luò)meter.properties文件,修正如下兩個(gè)裝備項(xiàng),比方我這兒修正為9999:
server_port=9999
server.rmi.localport=9999
2、發(fā)動(dòng)slave機(jī)上的jmeter-server.bat端口已經(jīng)修正為:9999
3、master:修正master機(jī)器的jmeter.properties文件:
remote_hosts
4、重啟jmeter.bat

五、其它說(shuō)明:
1、調(diào)度機(jī)(master)和履行機(jī)(slave)最好分隔,因?yàn)閙aster需求發(fā)送信息給slave而且會(huì)接收slave回傳回來(lái)的測(cè)驗(yàn)數(shù)據(jù),所以mater本身會(huì)有消耗,所以建議單獨(dú)用一臺(tái)機(jī)器作為mater。
2、參數(shù)文件:假如運(yùn)用csv進(jìn)行參數(shù)化,那么需求把參數(shù)文件在每臺(tái)slave上拷一份且途徑需求設(shè)置成一樣的,F(xiàn)ilename這兒設(shè)定一下。
3、每臺(tái)機(jī)器上裝置的Jmeter版別和插件最好都一致,不然會(huì)出一些意外的問(wèn)題。
4、假如想要master也分擔(dān)負(fù)載,讓master本身也履行測(cè)驗(yàn)方案,需求把master 的 IP 和 端口也寫(xiě)到裝備文件里,在長(zhǎng)途發(fā)動(dòng)前,也要把master的 jmeter-server.bat運(yùn)行,這樣master也能和其他slave一同履行測(cè)驗(yàn)方案了。
六、比較
與LoadRunner的異同:
1.都能夠完成分布式負(fù)載,各有優(yōu)劣
2.都支撐windows和linux下的slave,但master,jmeter跨平臺(tái),LR不
3.LR能夠指定每個(gè)slave生成不同數(shù)量的并發(fā)用戶,jmeter不行
4.jmeter中測(cè)驗(yàn)方案運(yùn)用的數(shù)據(jù)文件不會(huì)隨腳本發(fā)送到slave,而LR能夠經(jīng)過(guò)挑選納入LR辦理一同發(fā)送到遠(yuǎn)端slave