linux環境下使用jmeter進行分布式測試


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文件進行記錄

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM