1、前言
熟練使用jmeter進行性能測驗的工程師都知道,jmeter的客戶端性能是有點差的,這會導致一個問題,其客戶端的性能損耗會干擾到性能測驗的結果,而且當執行緒數/并發大到一定程度時,客戶端性能會急速下降,導致整個性能測驗程序不可控,
比如說我自己這臺啵羅啵羅的作業電腦,啟動500執行緒,基本就卡死了,
因此在進行大壓力性能測驗時,通常的解決方案是使用分布式無界面測驗的辦法,將一臺客戶機的壓力分布到數臺執行機上,避免jmeter客戶端的性能損耗,
下面就來詳細闡述一下完成分布式壓測的程序,
2、環境準備
- 物理準備
兩臺linux centos7服務器
- jdk安裝
網上有大量的linux安裝jdk攻略,此處不再贅述,
CentOS下個人推薦使用yum安裝的方式,方便快捷,而且省去環境配置的痛苦,
yum search jdk
列出jdk可選安裝包如下圖所示:

然后選擇合適的包安裝:
yum -Y install java-1.8.0-openjdk.x86_64
當然要使用yum命令,可能需要配置YUM源等等,這里就真的不再贅述了,
- jmeter安裝
這里推薦直接直接將你本地的jmeter客戶端打包上傳至linux服務器,因為我們撰寫jmeter測驗計劃還會在本地進行(因為圖形界面比較方便操作),所以更推薦使用跟你本地一樣的客戶端,以免遇到版本不同所帶來的不可預見的一些問題,
將本地jmeter客戶端打成zip檔案,上傳到服務器目錄,如/opt/jmeter(上傳路徑自由選擇),使用unzip命令進行解壓,以我自己用的jmeter客戶端為例:
unzip apache-jmeter-5.0.zip
當然,請注意unzip命令并非CENTOS默認自帶的,也可能需要通過rpm或者yum先安裝,
然后賦予解壓后的檔案夾完全權限:
chmod 777 -R apache-jmeter-5.0
然后使用如下命令配置jmeter環境變數:
export JMETER_HOME=/opt/jmeter/apache-jmeter-5.0 export PATH=$JMETER_HOME/bin:$PATH export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$CLASSPATH
并且:
source /etc/profile
使得配置生效,
這里直接修改/etc/profile檔案,將環境變數配置寫入到檔案最后也是可以的,
配置好了以后,敲入:
jmeter -v
看到如下資訊代表安裝配置成功:

3、分布式配置
在至少兩臺linux服務器上安裝好jmeter之后,下一步開始進行分布式的配置,其原理大抵如下圖所示:

簡而言之,我們將在執行機上啟動jmeter-server的這樣的一個小型服務,然后使用調度機通過ssl協議訪問這一服務并向他發出執行指令和收集結果,
- 配置執行機
在執行機上編輯jmeter安裝目錄下的/bin/jmeter.properties組態檔,將:server.rmi.ssl.disable值改為true,代表允許ssl連接,
# Set this if you don't want to use SSL for RMI server.rmi.ssl.disable=true
為避免jmeter-server的埠隨機分配,繼續修改如下兩個值:
# the following property before starting the server: server.rmi.localport=4000 # RMI port to be used by the server (must start rmiregistry with same port) server_port=1099
分別將這兩個埠值改為你所想使用的埠號,
配置完畢后,用如下命令啟動jmeter server:
jmeter-server -Djava.rmi.server.hostname=172.16.10.76
TIPS:如果想使用無日志模式,可以改寫成如下形式:
nohup ./jmeter-server -Djava.rmi.server.hostname=172.16.100.76 >>1.txt &
在每一臺執行機上完成如上配置并啟動,
- 配置宿主機
同樣編輯jmeter安裝目錄下的/bin/jmeter.properties組態檔,修改如下值,即指定執行機的地址與埠,如有多個以“,”隔開:
# Remote Hosts - comma delimited remote_hosts=127.0.0.1:1099,172.16.100.76:1099 #remote_hosts=localhost:1099,localhost:2010
- 執行腳本
在控制機上運行如下命令:
jmeter -n -t test.jmx -R 172.16.100.76,172.16.100.77 -l testReport.jtl
或者(因為已在宿主機上配置了默認使用的執行機資訊)
jmeter -n -t test.jmx -r -l testReport.jtl
其中引數的含義為:
-
- n:非gui運行
- t:指定測驗腳本
- R:指定多少個 agent 啟動并參與測驗
- r: 代表全部 agent 啟動并參與測驗
- l:生成測驗結果檔案
啟動后看到開始如下滾屏則表示測驗已經運行成功:

- 查看日志
在分布式執行程序中,主要的日志可以查看:
-
- 執行機上的jmeter-server.log:記錄執行程序中的詳細資訊,與單機執行時的jmeter.log等效
- 執行機的服務日志可以通過nohup命令將其寫入外部檔案,以便查看
- 測驗執行的結果報告可以通過輸入到jtl檔案進行記錄
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/257998.html
標籤:其他
上一篇:寒假作業1/2
