使用Jmeter在linux環境實現分布式負載
阿新 • • 發佈:2018-11-26
分布式 tex 啟動 使用 管理 遠程服務 dev 查詢接口 說明 分布式意義:在使用Jmeter進行性能測試時,如果並發數比較大(比如最近項目需要支持1000並發),單臺電腦的配置(CPU和內存)可能無法支持,這時可以使用Jmeter提供的分布式測試的功能
- 一、Jmeter分布式執行原理
- Jmeter分布式測試時,選擇其中一臺作為調度機(master/Controller),其它機器做為執行機(slave/Agent)
- 執行時,master會把腳本發送到每臺slave上,slave 拿到腳本後就開始執行,slave執行時不需要啟動GUI,我理解它應該是通過命令行模式執行的
- 執行完成後,slave會把結果回傳給master,master會收集所有slave的信息並匯總
- 分布式測試原理:如下圖
- 二、執行機(slave)配置
- slave機上需要安裝Jmeter,使用rz命令上傳jmeter壓縮文件,然後解壓
- 默認一般給的用戶不是管理員,則修改用戶環境變量即可:vi ~/.bashrc ,在文件末尾添加該行 export PATH=$PATH:/home/mdrsopen/apache-jmeter-4.0-performance/bin ,此路徑為jmeter的的路徑,修改完畢,輸入:wq退出,執行 source?~/.bashrc
- 輸入jmeter -v,出現下圖證明配置成功
- 輸入jmeter -v,出現下圖證明配置成功
- 進入jmeter的bin目錄,修改jmeter-server文件,指定主機ip
- 去掉RMI_HOST_DEF前面的#,末尾的XX改成當前主機ip
- 去掉RMI_HOST_DEF前面的#,末尾的XX改成當前主機ip
- 可以對負載機端口進行修改,默認為1099,也可以修改成自己需要的端口,修改完畢,輸入:wq退出
- 輸入./jmeter-server啟動負載機,出現如下界面,證明啟動成功
- 多臺slave的話,重復1~5步驟就好
- slave機上需要安裝Jmeter,使用rz命令上傳jmeter壓縮文件,然後解壓
- 三、調度機(master)配置
- 腳本:一個devops平臺的查詢接口
- 找到Jmeter的bin目錄下jmeter.properties文件,修改如下配置,IP和Port是slave機的IP以及自定義的端口(負載機端口有一臺自定義為1234,有一臺默認為1099):remote_hosts=10.16.69.174:1234,10.16.18.21:1099
- 多臺slave之前用","隔開,我這配置了2臺,可以看到標紅的這個就是上面截圖slave的IP和Port
- 打開Jmeter,選擇運行,有啟動、遠程啟動、遠程全部啟動三個選項:
啟動:就是啟動當前master(調度機),把調度機當負載機單獨執行
遠程啟動:可以選擇執行需要的負載機
遠程全部啟動:顧名思義,就是啟動所有的負載機 - 選擇遠程啟動-->10.16.18.21:1099
- master結果,這裏我只啟動了10.16.18.21:1099這一臺slave,所以只有一個結果(線程數和循環次數都是1):
- slave控制臺信息:
- 選擇遠程啟動-->遠程全部啟動:
- master結果,全部啟動,我配置了2臺slave,所以有兩次執行結果
- 四、調度機(slave)使用命令執行分布式測試
- widows環境執行
- jmeter -n -t 監聽設置.jmx -r -l log.jtl
- 參數說明 :
-n ?告訴jmeter使用非GUI模式執行測試
-t ? 執行的測試腳本名
-r? 遠程執行 , 在Jmter.properties文件中指定的所有遠程服務器
-l? 結果文件,如果不寫路徑,則在執行目錄生成
- linux環境命令相同
- widows環境執行
- 五、其它說明:
- 調度機(master)和執行機(slave)最好分開,由於master需要發送信息給slave並且會接收slave回傳回來的測試數據,所以mater自身會有消耗,所以建議單獨用一臺機器作為mater。
- 調度機(master)和執行機(slave)最好分開,由於master需要發送信息給slave並且會接收slave回傳回來的測試數據,所以mater自身會有消耗,所以建議單獨用一臺機器作為mater。
- 每臺機器上安裝的Jmeter版本和插件最好都一致,否則會出一些意外的問題。
- 執行機(slave)設置的端口,首先要保證未被占用,可以使用該命令進行查詢,netstat -anp|grep 端口? 如果查詢為空則可以進行配置,如下
- 查詢有值,則代表該端口已經被占用,需要換一個端口
使用Jmeter在linux環境實現分布式負載