JMeter中分散式測試時,本地無法承載時如何操作?

博為峰網校發表於2019-03-04

對於併發量很大的需求,如上萬併發量,受到CPU和記憶體的限制,單機模擬場景是實現不了的,為了讓JMeter提供更大的負載能力,須使用它的分散式機制,即多臺機器同時產生負載的功能。

特點:

1.真實的效能測試,不存在網路瓶頸問題

2.GUI僅限windows平臺,命令列可在linux與windows

3.測試結果儲存在本地一臺master上

4.使用這臺master管理多個Jmeter Engines,也叫做slave

5.測試指令碼會被master自動傳送到作為負載生成器的slave,但資料檔案不會

在進行分散式平臺測試的時候,要最好注意以下幾點:

1.master也可以同時作slave,但要注意負載適量

2.所有負載生成器slave上安裝相同的jmeter與jdk

3.防火牆和防毒軟體要關閉或過濾

4.確保所有master與slave在同一個網段或子網,沒有網路延遲

5.master與slave可以是windows或linux,不必全部是同一個OS,但要開放防火牆,否則connect fail

6.指令碼使用的資料檔案(比如CSV)需要單獨傳到每個slave,並且指令碼中指定的檔案路徑要能夠在每個slave找到該檔案,常使用相對路徑,較方便

7. 確保jmeter可以訪問伺服器

8. 確保各個jmeter版本一致,不同版本可能會存在協同問題

JMeter中分散式測試時,本地無法承載時如何操作?

一、Jmeter分散式執行原理:

1、Jmeter分散式測試時,選擇其中一臺作為排程機(master),其它機器做為執行機(slave)。

2、執行時,master會把指令碼傳送到每臺slave上,slave 拿到指令碼後就開始執行,slave執行時不需要啟動GUI,我理解它應該是透過命令列模式執行的。

3、執行完成後,slave會把結果回傳給master,master會收集所有slave的資訊並彙總。

一、執行機(slave)配置:

1、slave機上需要安裝Jmeter 和 支援當前Jmeter版本的JDK。(有時在執行Jmeter時會提示JDK版本過低)

2、新增環境變數:JMETER_HOME路徑為bin目錄的上一級目錄,這樣啟動jmeter-server服務時,就只會看到Found ApacheJMeter_core.jar

3、啟動bin目錄下的:jmeter-server.bat,啟動成功如下圖。(jmeter 的安裝路徑不要包含空格,因為jmeter-server.bat不支援含空格的資料夾路徑。)

JMeter中分散式測試時,本地無法承載時如何操作?

4、上圖上標紅的IP和埠會在master裡配置時用到。IP就是slave機器IP,埠預設是1099,埠也可以自定義,這裡我自定義為1000。

5、多臺slave的話,重複1~4步驟就好。  

三、排程機(master)配置:

1、指令碼:簡單的一個訪問百度的指令碼: 

JMeter中分散式測試時,本地無法承載時如何操作?

2、開啟Jmeter的bin目錄下jmeter.properties檔案,修改如下配置IP和Port是slaver機的IP以及預設的1099埠,一下兩種配置方法都可以。

remote_hosts=172.16.xx.xx,

remote_hosts=172.16.xx.xx:1099, :1099

多臺slave之前用 "," 隔開。

修改如下配置,這裡埠我自定義為100:

remote_hosts=10.13.223.202:1000,10.13.225.12:1000

我這配置了2臺,可以看到標紅的這個就是上面截圖slave的IP和Port.

3、開啟Jmeter,選擇執行,有運程啟動、運程全部啟動兩個選項:

JMeter中分散式測試時,本地無法承載時如何操作?

4、選擇遠端啟動-->10.13.225.12:1000

a) master結果,這裡我只啟動了10.13.225.12:1000這一臺slave,所以只有一個結果(執行緒數和迴圈次數都是1):

JMeter中分散式測試時,本地無法承載時如何操作?

b) slave控制檯資訊:

JMeter中分散式測試時,本地無法承載時如何操作?

5、選擇遠端啟動-->遠端全部啟動:

a) master結果,全部啟動,我配置了2臺slave,所以有兩次執行結果:

JMeter中分散式測試時,本地無法承載時如何操作?

四、自定義埠:

如何自定義slave埠:

1、slave:在slave機的Jmeter的bin目錄下,找到jmeter.properties檔案,修改如下兩個配置項,比如我這裡修改為9999:

      server_port=9999

      server.rmi.localport=9999

2、啟動slave機上的jmeter-server.bat埠已經修改為:9999

3、master:修改master機器的jmeter.properties檔案:

      remote_hosts

4、重啟jmeter.bat

五、其它說明:

1、排程機(master)和執行機(slave)最好分開,由於master需要傳送資訊給slave並且會接收slave回傳回來的測試資料,所以mater自身會有消耗,所以建議單獨用一臺機器作為mater。

2、引數檔案:如果使用csv進行引數化,那麼需要把引數檔案在每臺slave上拷一份且路徑需要設定成一樣的,Filename這裡設定一下。

JMeter中分散式測試時,本地無法承載時如何操作?

3、每臺機器上安裝的Jmeter版本和外掛最好都一致,否則會出一些意外的問題。

4、如果想要master也分擔負載,讓master自身也執行測試計劃,需要把master 的 IP 和 埠也寫到配置檔案裡,在遠端啟動前,也要把master的 jmeter-server.bat執行,這樣master也能和其他slave一起執行測試計劃了。

六、比較

與LoadRunner的異同:

1.都可以實現分散式負載,各有優劣

2.都支援windows和linux下的slave,但master,jmeter跨平臺,LR不

3.LR可以指定每個slave生成不同數量的併發使用者,jmeter不可

4.jmeter中測試計劃使用的資料檔案不會隨指令碼傳送到slave,而LR可以透過選擇納入LR管理一起傳送到遠端slave

歡迎加入  51軟體測試大家庭,在這裡你將獲得【最新行業資訊】,【免費測試工具安裝包】,【軟體測試技術乾貨】,【面試求職技巧】... 51與你共同學習,一起成長!期待你的加入: QQ                     群:                    755431660


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31407649/viewspace-2637515/,如需轉載,請註明出處,否則將追究法律責任。

相關文章