jmeter什麼要做分散式部署?
jmeter是執行在JVM虛擬機器上的,當模擬大量併發時,對執行機器的效能/網路負載會很大。
此時就需要使用jmeter的分散式部署功能,實現多臺被控機器同時併發訪問被測系統。
原理圖:

準備工作:
1.在所有機器上,安裝相同版本的jmeter和JDK。
2.所有機器連線同一個網路。
3.把所有機器的防火牆關閉,否則很可能會連線失敗。
步驟1:
修改master控制端:
1.修改master控制端的jmeter的bin目錄下的jmeter.properties檔案。
如圖,在remote_hosts處新增負載機的IP+埠。
在server_port處新增本機伺服器IP埠(如果控制端不作為負載機,可不新增)。

2.找到server.rmi.ssl.disable,把註釋去掉,把false改為true。
步驟2:
修改slave負載機端:
1.與控制端一樣,修改remote_hosts與server_port的IP埠。
該IP+埠就是之前新增在控制端remote_hosts裡面的值。

2.同樣找到server.rmi.ssl.disable,把註釋去掉,把false改為true。

步驟3:
負載機啟動server
所有slave負載機,在jmeter的bin目錄下,開啟jmeter-server.bat檔案;

步驟4:
啟動控制端master,執行效能測試。
這裡為了演示,直接啟動控制端的GUI(實際測試時需要使用命令列執行,下一步會講到)。
在Run的Remote Start中,可以看到之前在控制端配置的IP,代表可選擇的負載機。
執行Remote Start All,則會執行之前在控制端jmeter.properties檔案中配置的所有虛擬機器。

執行成功後,負載機的命令列會顯示執行成功資訊。

執行成功後,在控制端GUI的聚合報告可檢視到執行結果。

步驟5:
使用命令列執行壓力測試;
這很多人使用jmeter進行併發測試時,容易忽略了的一點:
在雙擊jmeter.bat檔案啟動GUI時,命令列已經提示,GUI僅適用於除錯,不可用於負載測試。

如提示語,開啟CMD命令列,輸入如下:
jmeter -n -t [指令碼路徑] -l [結果檔案路徑] -e -n [web報告路徑]
例如,筆者輸入:
jmeter -n -t C:\Users\user\Desktop\jmeterPerf.jmx -R 192.168.1.128:2088,192.168.1.114:2099 -lC:\Users\user\Desktop\jmeter\
result.txt -e -o C:\Users\user\Desktop\jmeter\webreport

使用命令列執行完併發效能測試後,即可在填寫的路徑下開啟報告檢視。
可能存在的報錯:
1. Connection refused:connect 可能是防火牆未關閉,把控制機和負載機的防火牆都關閉即可。

2. Connection timed out 連線超時,可能機器未在同一個區域網,或者填寫的IP埠錯誤。
檢查是否IP+埠是否正確,檢查負載機的server_port是否設定,是否存在衝突被佔用。

3.Engine is busy 可能是異常退出等,導致被控負載機一直執行之前的測試,未釋放程式。
可以嘗試關閉負載機的java.exe程式,如果還不行,建議直接重啟機器。
