天天看點

JMeter 分布式壓測原理及實戰避坑指南

為什麼要做分布式?

之前我們講過如何在Linux環境下,用單機進行壓測,但是實際工作中,有時候我們需要用多台機器進行壓測。那麼什麼情況下我們需要用多台機器進行壓測呢?當我們一台機器不夠的情況下,就需要用多台機器。

那麼怎麼去鑒定機器到底夠不夠呢?這個主要看我們壓力機的資源(主要判斷在CPU,超過80%則表示不夠用了)。如果說我們在LInux環境下運作JMter,運作的過程中,是會消耗我們伺服器的資源,如cup、記憶體等。如果說我們機器資源不夠了,那麼測試出來的資料是不準的。如我們tps壓不上去,很有可能就是伺服器資源不行了,在這種情況下,我們通常都需要拓展機器。

分布式壓測原理

JMeter 分布式壓測原理及實戰避坑指南
  • JMeter分布式壓測是選擇一台作為排程機(master),其他機器作為執行機(slave),當然一台機器也可以既做排程機,也做執行機
  • 排程機執行腳本的視乎,master會将 jmx腳本分發到slave中,slave拿到腳本以後以非GUI的形式開始執行。
  • slave執行完畢知乎,将結果傳回給master,并有master進行結果的彙總。

分布式測試步驟:

系統在HOSTS檔案中進行類似 本機IP 主機名的配置,如10.0.0.23 zhoucentos,否則啟動jmeter server會報錯!

首先,我們來檢視本機ip和hostname

JMeter 分布式壓測原理及實戰避坑指南

檢視之後,通過 vi/etc/hosts進行配置,将ip和hostname配置進去并儲存。每台機器都配置。

JMeter 分布式壓測原理及實戰避坑指南
  • 在每台機器上都部署jmeter
  • 如果java腳本,将java腳本和相關lie包都放在jmeter目錄/ext下
  • 将jmeter的場景檔案jmx上傳到主jmeter的任意位置,參數檔案放到每一台壓力機上(存放目錄要相同)
  • 沒台機器修改jmeter.properties檔案,ssl.disable=true (

    去掉注釋

    )
    JMeter 分布式壓測原理及實戰避坑指南
  • 在每台機器上進入到jmeter的bin目錄下,都啟動 nohup ./jmeter-server &(背景啟動jmeter-server服務)
    JMeter 分布式壓測原理及實戰避坑指南
    檢視啟動日志,成功了
    JMeter 分布式壓測原理及實戰避坑指南
  • 在主jmeter的bin目錄下,修改jmeter.properties,将其中的remote_host修改作為壓力機的兩台機器ip。remote_host=127.0.0.1,192,168.0.102
    JMeter 分布式壓測原理及實戰避坑指南
  • 在主jmeter的機器上,執行jmter -n -t xxx.jmx -l result.jtl -r(示例,具體根據目錄和路徑自定義)

    -r 則表示分布式壓測,如果每加,則是單機壓測

注意:

1、如果是http腳本,在controller的機器上有腳本檔案即可;

2、如果是Java腳本,在每一台機器上都的有腳本檔案和依賴的jar包

JMeter 分布式壓測原理及實戰避坑指南

可以看到已經執行成功了~

避坑:

這裡在執行的過程中,連接配接從機失敗了,主要原因是因為阿裡雲安全組中沒有添加預設端口1099。

指令行配置IP

前面我們在 jmeter.properties 檔案中,配置了從機的ip,其實還有一種方式可以不用修改配置檔案,指令行的方式可以運作,也可以達到相同的效果。

jmeter -n -t Linux.jmx -l result3.jtl -R 127.0.0.1,192.168.2.120
           

溫馨提示

如果在分布式壓測過程中,想要終止壓測,千萬不要在Linux上按 ctrl + c 強制終止程式,這樣會知道主程式挂了之後,從機未接受到執行,會一直持續運作。當你再次從主機上運作腳本,從機仍然會在上一個腳本的程式中運作。

如果想要終止程式,可以執行指令行./shutdown.sh ,通知master終止程式,然後master 再去通知salve停止運作。

cd 進入到JMeter 的 bin 目錄下
輸入 ./shutdown.sh 指令停止腳本
           

繼續閱讀