Jmeter 是Java 應用,對於CPU和內存的消耗比較大,因此,當需要模擬數以千計的並發用戶時,使用單台機器模擬所有的並發用戶就有些力不從心,甚至會引起JAVA內存溢出錯誤。
其實,Jmeter的遠程啟動可以幫助我們解決此問題,通過單個 jmeter 客戶端控制多個遠程的jmeter服務器,使它們同步的對服務器進行壓力測試。
【環境】
這里,把控制多個機器執行的機器稱作Controller,把真正向服務器施加壓力的機器成為Agent。
Controller機器:Win7 + Jmeter3.2 + jdk1.8 ,ip = *.*.*.48
Agent機器:Jmeter3.2 + jdk1.8 ,ip = *.*.*.95
注意:
①Controller與Agent的Jmeter版本要一致,否則會出現遠程調用失敗(JRMP);
【配置】
Controller機器:Jmeter安裝路徑的bin下,編輯jmeter.properties文件,追加如下內容:
# Jmeter遠程啟動:Controller機配置,格式為:“IP1:port1,IP2:port2”,如下只配置了一台Agent;
remote_hosts=*.*.*.95:1029
Agent機器:Jmeter安裝路徑的bin下,編輯jmeter.properties文件,追加如下內容:
# Jmeter遠程啟動:Agent機配置
server_port=1029
server.rmi.localport=1029
備注:若出現端口被占用,Windows上在dos框輸入“netstat -ano”,查看端口使用情況,這里推薦使用新的端口;
【腳本文件】
①需要在每台Agent上復制一份腳本文件及相關的文件,且路徑要一致;否則會出現在測試一閃而過,“查看結果樹”中無任何請求;
②參數文件:Controller機器的參數文件配置元件CSV Data Set Config中,FileName要給絕對路徑;Agent機器相對路徑絕對路徑均可;
【啟動】
①Controller機器:“運行”→“遠程啟動”,可以看到我們配置的Agent機器的IP及端口,如下所示,選擇這台機器;
②Agent機器:
Jmeter安裝在Windows平台上:cmd到dos中,進入Jmeter安裝路徑的bin目錄下,執行“jmeter-server”
Jmeter安裝在Linux平台上:進入Jmeter安裝路徑的bin目錄下,執行“./jmeter-server”;
否則會報如下錯誤:“Java.net.ConnectionException: Connection refused:connect”
③Controller機器:點擊“啟動”按鈕即可執行,此時可在Agent的機器上看到執行的情況(Windows);
至此,遠程啟動執行完畢。