1. 程式人生 > >使用Jmeter在linux環境實現分散式負載

使用Jmeter在linux環境實現分散式負載

分散式意義:在使用Jmeter進行效能測試時,如果併發數比較大(比如最近專案需要支援1000併發),單臺電腦的配置(CPU和記憶體)可能無法支援,這時可以使用Jmeter提供的分散式測試的功能

  • 一、Jmeter分散式執行原理
    1. Jmeter分散式測試時,選擇其中一臺作為排程機(master/Controller),其它機器做為執行機(slave/Agent)
    2. 執行時,master會把指令碼傳送到每臺slave上,slave 拿到指令碼後就開始執行,slave執行時不需要啟動GUI,我理解它應該是通過命令列模式執行的
    3. 執行完成後,slave會把結果回傳給master,master會收集所有slave的資訊並彙總
    4. 分散式測試原理:如下圖
      使用Jmeter在linux環境實現分散式負載
  • 二、執行機(slave)配置
    1. slave機上需要安裝Jmeter,使用rz命令上傳jmeter壓縮檔案,然後解壓
      使用Jmeter在linux環境實現分散式負載
    2. 預設一般給的使用者不是管理員,則修改使用者環境變數即可:vi ~/.bashrc ,在檔案末尾新增該行 export PATH=$PATH:/home/mdrsopen/apache-jmeter-4.0-performance/bin ,此路徑為jmeter的的路徑,修改完畢,輸入:wq退出,執行 source ~/.bashrc
      使用Jmeter在linux環境實現分散式負載
      使用Jmeter在linux環境實現分散式負載
      • 輸入jmeter -v,出現下圖證明配置成功
        使用Jmeter在linux環境實現分散式負載
    3. 進入jmeter的bin目錄,修改jmeter-server檔案,指定主機ip
      使用Jmeter在linux環境實現分散式負載
      • 去掉RMI_HOST_DEF前面的#,末尾的XX改成當前主機ip使用Jmeter在linux環境實現分散式負載
    4. 可以對負載機埠進行修改,預設為1099,也可以修改成自己需要的埠,修改完畢,輸入:wq退出使用Jmeter在linux環境實現分散式負載
    5. 輸入./jmeter-server啟動負載機,出現如下介面,證明啟動成功 使用Jmeter在linux環境實現分散式負載
    6. 多臺slave的話,重複1~5步驟就好
  • 三、排程機(master)配置
    1. 指令碼:一個devops平臺的查詢介面使用Jmeter在linux環境實現分散式負載
    2. 找到Jmeter的bin目錄下jmeter.properties檔案,修改如下配置,IP和Port是slave機的IP以及自定義的埠(負載機埠有一臺自定義為1234,有一臺預設為1099):remote_hosts=10.16.69.174:1234,10.16.18.21:1099使用Jmeter在linux環境實現分散式負載
      • 多臺slave之前用","隔開,我這配置了2臺,可以看到標紅的這個就是上面截圖slave的IP和Port
    3. 開啟Jmeter,選擇執行,有啟動、遠端啟動、遠端全部啟動三個選項:
      啟動:就是啟動當前master(排程機),把排程機當負載機單獨執行
      遠端啟動:可以選擇執行需要的負載機
      遠端全部啟動:顧名思義,就是啟動所有的負載機
    4. 選擇遠端啟動-->10.16.18.21:1099
      • master結果,這裡我只啟動了10.16.18.21:1099這一臺slave,所以只有一個結果(執行緒數和迴圈次數都是1):使用Jmeter在linux環境實現分散式負載
      • slave控制檯資訊:
        使用Jmeter在linux環境實現分散式負載
    5. 選擇遠端啟動-->遠端全部啟動:
      • master結果,全部啟動,我配置了2臺slave,所以有兩次執行結果使用Jmeter在linux環境實現分散式負載
  • 四、排程機(slave)使用命令執行分散式測試
    • widows環境執行
      • jmeter -n -t 監聽設定.jmx -r -l log.jtl
      • 引數說明 :
        -n  告訴jmeter使用非GUI模式執行測試
        -t   執行的測試指令碼名
        -r  遠端執行 , 在Jmter.properties檔案中指定的所有遠端伺服器
        -l  結果檔案,如果不寫路徑,則在執行目錄生成使用Jmeter在linux環境實現分散式負載
    • linux環境命令相同
  • 五、其它說明:
    1. 排程機(master)和執行機(slave)最好分開,由於master需要傳送資訊給slave並且會接收slave回傳回來的測試資料,所以mater自身會有消耗,所以建議單獨用一臺機器作為mater。
    2. 排程機(master)和執行機(slave)最好分開,由於master需要傳送資訊給slave並且會接收slave回傳回來的測試資料,所以mater自身會有消耗,所以建議單獨用一臺機器作為mater。
    3. 每臺機器上安裝的Jmeter版本和外掛最好都一致,否則會出一些意外的問題。
    4. 執行機(slave)設定的埠,首先要保證未被佔用,可以使用該命令進行查詢,netstat -anp|grep 埠  如果查詢為空則可以進行配置,如下使用Jmeter在linux環境實現分散式負載
    5. 查詢有值,則代表該埠已經被佔用,需要換一個埠使用Jmeter在linux環境實現分散式負載