需要使用jmeter模擬大並發的情況時,單台壓測機不能滿足需求,可進行分布式壓測。
簡單來說就是,多台機器同時安裝jmeter,選擇一台機器作為調度機,其他作為壓力機。進行相應的配置后,就可以用調度機操控壓力機發起請求。
如何配置(以Windows為例):
1.壓力機:
1)執行當前壓力機下jmeter安裝包bin目錄下的jmeter-server的批處理文件,此時該機器上啟動一個java進程,並隨機分配端口,監聽來自調度機的請求。
但是這里我們需要配置成固定端口方式,否則調度機遠程啟動壓力機時,會報錯。

配置固定端口:打開bin目錄下的jmeter.properties文件,更改server_port、server.rmi.localport的端口為要配置的端口。

2.調度機:
打開jmeter安裝包bin目錄下的jmeter.properties文件,更改remote_hosts為,壓力機ip及執行jmeter-server后啟動的端口。

開始測試:
1.調度機正常配置好要測試的地址、參數、監聽器等后,選擇遠程啟動,就可以用剛剛配置好的壓力機,進行壓測了。

補充Linux上的配置:
1、啟動slave server 命令:jmeter-server -Djava.rmi.sver.hostname=192.168.0.64
遇到的問題及解決:
1、問題:jmeter4.0,啟動slave報錯 “java.io.FileNotFoundException: rmi_keystore.jks (沒有那個文件或目錄)”

解決:
方法一:slave的jmeter.properties中,設置“server.rmi.ssl.disable=true”
原因:jmeter4.0以上的版本,默認啟用RMI連接的安全通信,需要創建密鑰庫。所以將SSL禁用即可。
方法二:手動生成秘鑰和證書。執行create-rmi-keystore.bat(Windows適用)或create-rmi-keystore.sh(Linux適用)
2、問題:調度機遠程調用slave時,連接超時。查看slave上的jmeter-server.log,發現是與調度機的虛擬機網卡連接超時。
解決:在調度機的jmeter.bat中修改配置指定客戶端的網卡ip.
增加配置項:set rmi_host=-Djava.rmi.server.hostname=xxx.xxx.xxx.xxx 修改配置項:set ARGS=%DUMP% %HEAP% %NEW% %SURVIVOR% %TENURING% %PERM% %CLASS_UNLOAD% %DDRAW% %rmi_host%
注意事項:
1、master、slave的時間要同步,否則tps結果誤差較大。
同步時間的命令:
Windows下:w32tm /config /manualpeerlist:"time.windows.com" /syncfromflags:manu al /reliable:yes /update
Linux下:ntpdate time.windows.com
參考資料:
http://www.fblinux.com/?p=339
https://www.cnblogs.com/linbo3168/p/6042255.html
https://jmeter.apache.org/usermanual/jmeter_distributed_testing_step_by_step.html
https://stackoverflow.com/questions/50113061/jmeter-4-0-error-starting-remote-server?rq=1
https://www.cnblogs.com/suntingme/p/5995721.html
https://testerhome.com/topics/12474
https://blog.csdn.net/dev666/article/details/79776450
https://blog.51cto.com/ydhome/1862841?source=drt
