1. 程式人生 > 實用技巧 >jmeter分散式測試

jmeter分散式測試

1 簡介

1.1 為什麼使用分散式

  當模擬併發請求較大或者指令碼執行時間較長時,壓力機會出現卡頓甚至報記憶體溢位。針對這個情況,JMeter 的解決方案是支援分散式壓測,即將大量的模擬併發分配給多臺壓力機來滿足這種大流量的併發請求場景。

1.2 分散式的原理

  JMeter 分散式壓測時,選擇其中一臺作為控制機(master),其餘的機器做為負載機(slaves),執行時指令碼,控制機會把指令碼傳送到每個負載機上,負載機獲取到指令碼就執行指令碼(負載機只需要啟動 jmeter-server.bat 或者 jmeter-server)。執行後,負載機回傳執行結果給控制機,控制機進行彙總。

1.3 分散式注意事項

  • 系統上的防火牆已關閉或打開了正確的埠
  • 所有客戶端都在同一子網中
  • 確保 JMeter 可以訪問伺服器
  • 確保在所有系統上使用相同版本的 JMeter 和 Java
  • 為 RMI 設定了 SSL 或將其禁用

1.4 分散式環境搭建

  本次使用 Windows 作為控制機,Linux 作為負載機搭建分散式環境,JMeter 分散式的搭建非常簡單,主要步驟如下:

  1. 修改控制機的 jmeter.properties,remote_hosts 為負載機的 IP 地址,多臺機器用英文逗號隔開,埠預設為 1099,如果埠被佔用可以自行修改,禁用 SSL(server.rmi.ssl.disable=true)。

  1. 修改負載機的 jmeter.properties,禁用 SSL(server.rmi.ssl.disable=true)。

  1. 啟動負載機的 jmeter-server ,進到負載機 JMeter 安裝目錄的 bin 目錄下,執行
./jmeter-server -Djava.rmi.server.hostname=192.168.16.83

192.168.16.83 為負載機的 IP 地址,根據自己的實際情況修改。

2.遠端執行 JMeter 指令碼

2.1 遠端啟動單個負載機

  在控制機開啟 JMeter 指令碼,點選執行-遠端啟動,會看到在配置檔案 jmeter.properties 配置的 remote_hosts。選擇一個 IP 地址點選,此機器上的 JMeter 會執行指令碼並返回結果給控制機。

2.2 遠端啟動所有負載機

  點選執行-遠端啟動所有,所有的負載機都會去執行指令碼,並且返回結果給控制機,這樣就可以進行分散式壓測了。

遠端啟動負載機時需要注意幾點:

  • 確保負載機啟動了 jmeter-server,沒有啟動會執行失敗
  • 沒有必要將測試指令碼複製到每一臺機器,JMeter 控制機會將它發往每一臺 JMeter 負載機
  • 每一臺 JMeter 負載機都執行相同的測試指令碼,JMeter 不會在執行期間做負載均衡,每一臺負載機都會完整地執行測試指令碼
  • 如果使用 csv 進行引數化,那麼需要把引數檔案在每臺負載機上拷一份且路徑需要設定成一樣的
  • 分散式測試中,通過遠端啟動負載機,預設檢視結果樹中的響應資料為空