在使用Jmeter進行性能測試時,若是併發數比較大(好比最近項目須要支持1000併發),單臺電腦的配置(CPU和內存)可能沒法支持,這時可使用Jmeter提供的分佈式測試的功能。apache
1、Jmeter分佈式執行原理:併發
一、Jmeter分佈式測試時,選擇其中一臺做爲調度機(master),其它機器作爲執行機(slave)。分佈式
二、執行時,master會把腳本發送到每臺slave上,slave 拿到腳本後就開始執行,slave執行時不須要啓動GUI,我理解它應該是經過命令行模式執行的。性能
三、執行完成後,slave會把結果回傳給master,master會收集全部slave的信息並彙總。測試
2、執行機(slave)配置:spa
一、slave機上須要安裝Jmeter,具體如何安裝這裏不詳細介紹了。插件
二、添加環境變量:JMETER_HOME=D:\B_TOOLS\apache-jmeter-2.13,此處爲你Jmeter的路徑命令行
三、啓動bin目錄下的:jmeter-server.bat,啓動成功以下圖:線程
四、上圖上標紅的IP和端口會在master裏配置時用到。IP就是slave機器IP,端口默認是1099,端口也能夠自定義,這裏我自定義爲1000,這個後面會講。 3d
五、多臺slave的話,重複1~4步驟就好。
3、調度機(master)配置:
一、腳本:簡單的一個訪問百度的腳本:
二、找到Jmeter的bin目錄下jmeter.properties文件,修改以下配置,IP和Port是slave機的IP以及自定義的端口(這裏端口我自定義爲100,後面會講如何自定義):
remote_hosts=10.13.223.202:1000,10.13.225.12:1000
多臺slave以前用","隔開,我這配置了2臺,能夠看到標紅的這個就是上面截圖slave的IP和Port.
三、打開Jmeter,選擇運行,有運程啓動、運程所有啓動兩個選項:
四、選擇遠程啓動-->10.13.225.12:1000
a) master結果,這裏我只啓動了10.13.225.12:1000這一臺slave,因此只有一個結果(線程數和循環次數都是1):
b) slave控制檯信息:
五、選擇遠程啓動-->遠程所有啓動:
a) master結果,所有啓動,我配置了2臺slave,因此有兩次執行結果:
4、自定義端口:
上面其實已經實現了Jmeter的分佈式測試,這部分主要介紹下如何自定義slave端口:
一、slave:在slave機的Jmeter的bin目錄下,找到jmeter.properties文件,修改以下兩個配置項,好比我這裏修改成1888:
server_port=1888
server.rmi.localport=1888
二、啓動slave機上的jmeter-server.bat,以下圖,端口已經修改成:1888
三、master:修改master機器的jmeter.properties文件:
remote_hosts=10.13.223.202:1000,10.13.225.12:1888
四、重啓jmeter.bat,以下圖,端口已經變了:
5、其它說明:
一、調度機(master)和執行機(slave)最好分開,因爲master須要發送信息給slave而且會接收slave回傳回來的測試數據,因此mater自身會有消耗,因此建議單獨用一臺機器做爲mater。
二、參數文件:若是使用csv進行參數化,那麼須要把參數文件在每臺slave上拷一份且路徑須要設置成同樣的。
三、每臺機器上安裝的Jmeter版本和插件最好都一致,不然會出一些意外的問題。