使用JMeter開展性能測試,當單臺機器無法滿足性能壓測的負載要求時,或者單臺機器的網絡帶寬存在瓶頸的情況下,可以采用分布式部署的方案來解決這些問題。
JMeter分布式部署方案中,需要一臺作為控制節點(Master),其余節點作為執行機(Slave)。控制節點負責向執行機發送指令和展示結果,執行機負責產生負載和向控制節點返回結果。

JMeter分布式環境部署
示例環境規劃:
- 控制機:windows系統,Master節點,ip=192.168.2.5;
- 執行機:CentOS系統,Slave節點,ip=192.168.2.15;
1. 前提條件
- Master、Slave使用相同的JMeter版本;Master、Slave使用相同的JAVA版本;
- Master、Slave節點:創建有效的keystore文件或者禁用ssl,這里選擇直接禁用ssl。編輯JMETER_HOME/bin/jmeter.properties設置server.rmi.ssl.disable=true。

如果需要開啟ssl,請參考Apache JMeter - User's Manual: Remote (Distributed) Testing中的13.1 Setting up SSL章節進行配置。
2. 執行機節點(Slave)配置
- 設置rmi.server.hostname,編輯JMETER_HOME/bin/jmeter-server,取消MI_HOST_DEF項的默認注釋并修改hostname為本機的IP地址
- MI_HOST_DEF=-Djava.rmi.server.hostname=192.168.2.15
推薦設置此項,否則可能運行jmeter-server會出現下面的錯誤:
- ./jmeter-server
- Server failed to start: java.rmi.RemoteException: Cannot start.
- localhost.localdomain is a loopback address.
- An error occurred: Cannot start. localhost.localdomain is a loopback
- address.
執行JMETER_HOME/bin/jmeter-server啟用服務,如果打印如下的信息表示啟動成功

3. 控制節點(Master)配置
- 指定Slave節點,編輯JMETER_HOME/bin/jmeter.properties,將remote_hosts設置為Slave節點的IP地址,如果有多臺Slave節點,以逗號分隔多個IP地址;
- remote_hosts=192.168.2.15
remote_hosts不需要指定端口號,JMeter會自動進行探測
- 多網卡情況,如果Master節點有多網卡(如安裝了虛擬機就會有個網卡,示例就是在windows機器上安裝了CentOS虛擬機作為Slave,就是多網卡的情況),JMeter會選擇任意網卡嘗試與Slave節點建立連接,如果選擇錯誤的網卡將無法建立連接。需要通過明確指定IP的方式來解決多網卡的問題,編輯JMETER_HOME/bin/jmeter.bat,在下圖中標記的位置添加如下兩條語句,其中server.hostname設置為可以與Slave連接的IP地址;
- set rmi_host=-Djava.rmi.server.hostname=192.168.2.5
- set ARGS=%DUMP% %HEAP% %NEW% %SURVIVOR% %TENURING% %PERM% %DDRAW% %rmi_host%

4. 遠程測試調測
步驟3設置完成后,重啟JMeter,打開要壓測的腳本文件,運行/遠程啟動菜單出現了Slave節點的IP,點擊Slave節點IP地址就會發起遠程節點的測試。

默認情況下,遠程節點測試可以通過匯總報告、聚合報告來查看調測結果,查
看結果樹不會顯示響應數據,主要是Master節點為了減少數據傳輸的開銷,如
果需要顯示可以通過取消注釋
JMETER_HOME/bin/jmeter.properties文件中
的mode=Standard來達到目的。
Slave節點也會打印響應的連接信息

JMeter分布式壓測執行正式執行壓測時,JMeter官方推薦在非GUI模式下運行,可以節省部分運行資源,執行如下命令啟動壓測
- jmeter -n -t 分布式測試示例.jmx -l report_01.jtl -e -o report_01
- 參數說明:
- -n 表示非GUI模式
- -t 表示指定腳本文件,可以使用相對和絕對路徑方式指定
- -l 表示指定結果記錄的文件,文件格式為.jtl
- -e 表示測試完成即生成報告
- -o 指定報告生成的目錄
壓測期間會持續打印匯總信息,可以看到執行了多久,響應時間、錯誤率、線程數等情況

壓測結束后會在參數指定的目錄下生成html格式的測試報告

原文地址:https://www.toutiao.com/i7053772121616679462/