jmeter分布式压测技术归档

概念解析:单台机可以对目标机器产生的压力比较小,受限因素包括CPU,网络,IO等。利用多台机器向目标机器产生压力,模拟几万用户并发访问,可以施加较大压力进行测试。(存在异常情况)

一、前置文件

jdk安装包
▪win和linux都需要预先配置好java环境,并且程序版本需要一致。本次测试,我们实际使用的版本为【jdk-8u333】版本,实际使用情况良好,后续推荐可以继续使用此版本。
▪注意事项:1.win和linux是不同的安装包文件;

jmeter安装包
▪win和linux的安装包是同样的程序包,启动程序都在一个包里。要提前把需要用到的插件安装好,之后再打包分发到各个机器上。
▪注意事项:1.版本必须一致,插件必须一致。2.所有从机存放目录需一致,方便后续调用;

参数化文件
▪当需要用到不同的数据去进行测试时,例如用户信息等。比较方便的办法是使用参数化文件,如csv格式的文件,有多少台从机,就准备多少份文件,文件内的内容需要不相同,但是文件名需要一致,可以准备多个文件,用不同的名字进行区分,方便测试不同的端口调用。

二、准备工作

需要用到的程序:
▪1.jmeter程序本体; (修改脚本,分发脚本,主从机运行)
▪2.notepad++或类似的文本编辑器;(编辑配置文档,修改文件编码规则)
▪3.Excel表格编辑软件; (生成csv文件)
▪4.7z、rar等压缩解压软件; (对远程桌面的文件进行打包解包)
▪5.xhsell等远程连接linux软件; (连接linux主机)
▪6.PDR等windows远程桌面软件; (连接windows主机)
▪7.xftp等linux远程传输软件; (与linux主机之间远程传输文件)
需要测试的端口参数,详细的参数报文;
先在GUI单点测试中编辑好相应的jmeter测试脚本,并冒烟通过;
准备施压机器
▪实际操作过程中可使用【1+x】的模式搭建分布式压测机器,我们本次使用的模式为1(windows)+10(Linux)的搭建模式。
▪注意事项:1.所有机器的防火墙,需要提前关闭,因为有时候,主从机之间无法连接大部分都是防火墙的原因,提前关闭,可以减少很多不必要的麻烦;2.主从机,需要分配在一个子网下面,方便进行数据沟通。例如【192.168.111.xxx】

三、过程详情

1、linux-从机-部署过程……系统安装过程略

1、java环境配置

1.卸载原有jdk

获取到远程linux主机的IP地址后,使用xshell等工具远程连接,需要注意使用root用户登录。
连接主机后,首先查询java环境,因为部分linux主机安装后,自带java环境,但是该环境无法被此项目使用,需要卸载。
第一步:rpm查询java安装包名称

[root@localhost java]# rpm -qa | grep java



java-1.7.0-openjdk-headless-1.7.0.51-2.4.5.5.el7.x86_64

tzdata-java-2014b-1.el7.noarch

python-javapackages-3.4.1-5.el7.noarch

java-1.7.0-openjdk-1.7.0.51-2.4.5.5.el7.x86_64

javapackages-tools-3.4.1-5.el7.noarch

//使用下面三次查询

#rpm -qa |grep java

#rpm -qa |grep jdk

#rpm -qa |grep gcj

第二步:–查询安装包安装到系统的文件位置并显示文件状态

rpm -qs java-1.7.0-openjdk-1.7.0.51-2.4.5.5.el7.x86_64

第三步:rmp删除安装包

rpm -e --nodeps java-1.7.0-openjdk-headless-1.7.0.51-2.4.5.5.el7.x86_64



rpm -e --nodeps tzdata-java-2014b-1.el7.noarch



rpm -e --nodeps python-javapackages-3.4.1-5.el7.noarch



rpm -e --nodeps  java-1.7.0-openjdk-1.7.0.51-2.4.5.5.el7.x86_64



rpm -e --nodeps javapackages-tools-3.4.1-5.el7.noarch

删除后使用rpm -qa | grep java查询是否有残留文件

2.安装预定版本jdk

首先使用linux远程连接工具连接到linux系统,具体的访问地址,用户名和密码,提前获取。

连接到远程linux主机之后,在预定的路径新建名为【JAVA】的目录,本次工程路径为/usr/local/java

mkdir  /usr/local/java

然后通过远程文件传输工具,把java安装包上传到服务器

进行解包操作(包名以实际为准)

tar -zxvf jdk-8u181-linux-x64.tar.gz

解包之后可以删除对应的包(也可以留着)

rm -f jdk-8u181-linux-x64.tar.gz

配置环境变量

vim /etc/profile
#在文件末添加以下内容

export JAVA_HOME=/usr/local/java/jdk1.8.0_333  #jdk安装目录

export JRE_HOME=${JAVA_HOME}/jre

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH

export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin

export PATH=$PATH:${JAVA_PATH}




:wq    //保存并退出

刷新配置文件,使配置立即生效

source /etc/profile

检验java环境是否安装成功

java -version

如果没有提示错误,显示正确的java信息,则java环境安装成功

2、jmeter部署,环境配置

在预定的路径新建目录(本次项目指定路径为 /usr/local/jmeter)

mkdir  /usr/local/jmeter

通过远程传输软件,上传jmeter包到服务器

进行解压

tar -zxvf apache-jmeter-5.4.3.tar.gz

配置环境变量,使jmeter生效

vim /etc/profile
#在文件末添加以下内容


export JMETER_HOME=/usr/local/jmeter/apache-jmeter-5.4.3    #jmeter安装路径

export CLASSPATH=${JMETER_HOME}/lib/ext/ApacheJMeter_core.jar:${JMETER_HOME}/lib/jorphan.jar:${CLASSPATH}

export PATH=${JMETER_HOME}/bin:$PATH



:wq    #保存并退出

#刷新配置文件,使环境变量立即生效

source /etc/profile

检验jmeter环境是否配置完成

jmeter -v

出现jmeter的图样,则表示jmeter环境配置成功

下一步,对jmeter目录进行赋权

cd /usr/local/jmeter

sudo chmod -R 777 apache-jmeter-5.4.3/ 

进入jmeter目录内,检查配置的权限是否已完成

权限配置完成后,则jmeter部署完成

3、主机防火墙关闭

首先先看下防火墙状态

firewall-cmd --state   //查看防火墙状态



running    //表示防火墙运行中,需要进行关闭

关闭防火墙

systemctl stop firewalld.service //关闭防火墙

再次看下防火墙状态,确认已关闭

firewall-cmd --state   //查看防火墙状态



not running    //表示防火墙已停止运行

4、配置文件修改

下面对每台不同的远程机器进行配置文件修改,需要注意的是,文件内容,需要与机器地址对应,否则无法生效。

以下操作在windows下完成,使用准备好的文本编辑软件

1、修改bin目录下

jmeter.properties

server.rmi.ssl.disable=true  //添加一行保证远程连接通



//端口在默认情况下无需修改,使用默认端口即可。



remote_hosts=172.31.255.84   //设置该项的地址为对应的本机地址,注:内网地址
2、修改bin目录下

jmeter-server

RMI_HOST_DEF=-Djava.rmi.server.hostname= 172.31.255.84  

//ip地址位置,填写对应的机器地址信息,注:内网地址

将修改好的配置文件,上传至对应地址的服务器目录(./jmeter/bin)下,覆盖原文件。

后续每台机器按照此方法修改配置文件,并上传服务器覆盖原文件即可。

***注意事项:以上所有文件的编码类型需要修改为utf-8保存,否则运行会报错。 ***

5、启动jmeter-linux远程测试程序

准备工作做好之后就可以启动从机的压测程序了

cd /usr/local/jmeter/apache-jmeter-5.4.3/bin/


nohup ./jmeter-server &   
#后台运行
#未出现报错,则启动成功

启动之后进行核验,进程是否已存在

ps -ef | grep jmeter-server

如看到3个进程在运行中,则从机的服务全部启动完毕。

2、windows-主机-部署过程……系统安装过程略

1、java环境配置

打开下载好的java环境安装包。注:与linux的安装包同一个版本。

选择安装路径,最好自选,方便后续配置环境变量。本次项目中使用的云主机,安装位置为:

c:\java c:java\javaxxx

安装完成后编辑系统环境变量

▪新建变量 JAVA_HOME

变量名:JAVA_HOME

变量值:C:\JAVA    #电脑上JDK安装的绝对路径

▪如果存在 CLASSPATH 变量,选中点击 Edit(编辑)。如果没有,点击 New(新建)… 新建。

变量名:CLASSPATH

变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

▪修改Path 变量,增加两个变量,如果是win10以前的版本,中间有连接符不要忘记添加

%JAVA_HOME%\bin

%JAVA_HOME%\jre\bin

编辑完成后,验证环境是否安装成功。

打开cmd,输入

java -version

#出现以下正确信息,则表示java环境部署完成,版本号需与Linux的版本一致

java version "1.8.0_291"     //示例版本号

Java(TM) SE Runtime Environment (build 1.8.0_291-b10)

Java HotSpot(TM) 64-Bit Server VM (build 25.291-b10, mixed mode)

2、jmeter部署及插件安装

解压jmeter包到预定位置即可。

本次测试中需要用到的额外插件 3 Basic Graphs ,前置插件plugins-manager (插件管理器,置于jmeter\lib\ext目录下)

插件安装完毕后,对jmeter进行打包,用做上传Linux主机的运行包。(此步需要先做)

3、配置文件修改

1、修改jmeter/bin目录下

jmeter.properties

server.rmi.ssl.disable=true  //文件末尾添加一行保证远程连接通

//端口在默认情况下无需修改,使用默认端口即可。

remote_hosts=172.31.XXX.101,…………, 172.31.XXX.109  //此处的IP地址填写从机的地址,中间使用英文标点符号【,】进行分隔,不需要填写windows主机本机的地址。

找到mode=Standard 项,去掉【#】注释符号

mode=Standard     
//该项设置影响从机返回的结果,response body的内容。如果不需要查看,可以不改
2、修改bin目录下`

jmeter.bat

找到如下位置

rem Collect the settings defined above
if not defined JMETER_COMPLETE_ARGS (        
    set ARGS=%JAVA9_OPTS% %DUMP% %HEAP% %VERBOSE_GC% %GC_ALGO% %DDRAW% %SYSTEM_PROPS% %JMETER_LANGUAGE% %RUN_IN_DOCKER% 
) else (
    set ARGS=
)


if "%JM_START%" == "start" (
    set JM_START=start "Apache_JMeter"
)

%JM_START% "%JM_LAUNCH%" %ARGS% %JVM_ARGS% -jar "%JMETER_BIN%ApacheJMeter.jar" %JMETER_CMD_LINE_ARGS%

rem If the errorlevel is not zero, then display it and pause

添加注释部分内容,使文件修改如下

rem Collect the settings defined above
if not defined JMETER_COMPLETE_ARGS (
        set rmi_host=-Djava.rmi.server.hostname=192.xxx.xxx.xxx
        #IP地址位置,填写windows主机的ip地址,注:内网地址。
    set ARGS=%JAVA9_OPTS% %DUMP% %HEAP% %VERBOSE_GC% %GC_ALGO% %DDRAW% %SYSTEM_PROPS% %JMETER_LANGUAGE% 
    %RUN_IN_DOCKER% %rmi_host%  #添加了刚设置的参数
) else (
    set ARGS=
)
if "%JM_START%" == "start" (
    set JM_START=start "Apache_JMeter"
)
%JM_START% "%JM_LAUNCH%" %ARGS% %JVM_ARGS% -jar "%JMETER_BIN%ApacheJMeter.jar" %JMETER_CMD_LINE_ARGS%
rem If the errorlevel is not zero, then display it and pause



将修改好的配置文件,上传至windows主机目录./jmeter/bin下,覆盖原文件。

4、主从机连接测试

当配置文件均修改完成之后,可以进行试验性连接,进行连接前,确认所有从机已启动完毕,jmeter服务均已就绪。

点击windows远程主机-jmeter界面-菜单栏-运行菜单,点击远程启动所有。如果没有报错,则所有从机启动无异常,再从结果树一栏进行查看,实际的请求结果是否与计划的数目相等,查看是否有异常情况。若无异常情况,无报错,则主从机连接均已完成。

5、远程参数化文件设置

关于参数化文件的使用,因为所有的线程发起端均在从机(Linux)上,所以,所有的参数化文件需要预先布置在从机,具体如下:

参数化文件调用可以使用绝对路径和相对路径两种模式,本次工程中使用的是相对路径,相对路径即参数化文件相对于运行脚本的路径地址,运行脚本的路径地址一般默认为./jmeter/bin/目录下,所以本次参数化文件的地址定义在同级目录中,参数化文件的上传地址即./jmeter/bin/。所有从机的参数化文件的文件名需做统一,例如qqqq.csv

jmeter详细设置:

▪添加用户定义变量菜单,添加变量,变量名自定义,变量值为当前目录。本次工程使用的变量名为path,最终结果为path ./

▪添加csv数据文件设置菜单,文件名一栏使用刚刚添加的变量${path}qqqq.csv。变量名称栏,填写新的变量名,用来从参数化文件中循环取值。

▪在http请求中的合适位置填写定义的取值变量名调用csv参数化文件的值。

5、远程参数化文件测试

▪远程参数化文件设置好之后,在请求中的合适位置配置变量,调用参数化,然后执行所有的远程主机,之后对比结果树中的请求body,是否符合预期结果。

另附:纯linux主从布置

条件限制下,只能布置纯linux的版本,使用该方法。

从机配置方式不变。

主机配置修改如下:

取消修改jmeter.bat文件

修改bin目录下 jmeter.server

在文件末尾添加如下内容:

RMI_HOST_DEF=-Djava.rmi.server.hostname=192.168.xxx.xxx    //此处填写主机内网IP地址

•其余配置修改不变

▪启动方式为主机命令行启动

jmeter -n -t /usr/local/jmeter/xxxx.jmx -l /usr/local/jmeter/xxxx.jtl
//jmeter                      脚本路径                 执行结果日志路径

//无报告模式



jmeter -n -t /usr/local/jmeter/xxxx.jmx -r -l /usr/local/jmeter/xxxx.jtl -e -o /usr/local/jmeter/xxxx
//jmeter                     脚本路径                 执行结果日志路径                      生成报告路径

//生成报告模式

如有不足,欢迎指出。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
JMeter分布式是使用多台计算机同时执行JMeter试计划,以模拟大量并发用户的力。使用分布式可以有效提高负载能力,并避免单台机器的性能限制。在分布式中,一个JMeter主控节点负责管理所有的试计划和生成结果报告,而多个JMeter工作节点则同时执行试计划,并将结果返回给主控节点进行统计和分析。 要进行JMeter分布式,需要进行以下步骤: 1. 配置JMeter主控节点:在主控节点上,设置一个JMeter试计划,并将其配置为分布式试模式。在试计划中,设置各个线程组、取样器和监听器等试元素,以模拟真实的用户行为。 2. 配置JMeter工作节点:在每个工作节点上,安装并配置JMeter,并确保与主控节点在同一局域网中。工作节点需要拥有相同的试计划文件和试数据。 3. 启动主控节点:在主控节点上启动JMeter,并开始。主控节点会将试计划和相关配置发送给各个工作节点,并收集并分析结果。 4. 启动工作节点:在每个工作节点上启动JMeter,并连接到主控节点。工作节点会接收主控节点发送的试计划和相关配置,并执行试计划。 5. 监控和分析结果:在过程中,可以通过主控节点的监听器查看实时结果,并在结束后生成详细的报告进行分析。 以上是JMeter分布式的基本流程。通过合理配置和管理分布式环境,可以更好地模拟真实的用户场景,评估系统的性能和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

琉璃__酱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值