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進程,如果還不行,建議直接重啟機器。
