Jmeter分布式测试-主从模式进行部署并进行压测(jmeter和java环境变量配置)

注:本文以linux为例

Jmeter消耗本机自身资源,因此在本机开启的线程数是有限的,如果超出了本机能支撑的最大线程数,会出现“OutOfMemory”等错误,为了解决上述问题,下面给出解决方案:Jmeter使用多台机器产生负载

安装JMETER

以192.9.200.105为master; 192.9.200.101,192.9.200.102,192.9.200.103为slave

部署Jmeter的前提都需要安装jdk为前提(这里就不作说明了);在所有机器上部署JMETER

vim /etc/profile

配置环境变量为:将以下内容加入profile文件中

# jmeter
export JMETER_HOME=/home/nacos/apache-jmeter-5.3  # jmeter的安装路径
export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$CLASSPATH
export PATH=$JMETER_HOME/bin:$PATH
export JAVA_HOME=/wuyc/jdk1.8.0_201     #jdk安装的目录

# java
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}

配置完毕后,通过source /etc/profile来使改变的配置文件生效。

然后 使用 jmeter --version来看看是否成功!

在这里插入图片描述

如果图中的结果,则表示Jmeter安装成功!

〇、分布式测试环境部署并使用:

1)确定其中一台机器作为master,其它机器作为slave
找到几台电脑作为测试机器,分配主从设备后,在每台机器上安装Jmeter。
注:Linux上安装Jmeter,先下载jmeter包apache-jmeter-4.0.taz.gz,然后解压jmeter包 tar -zxvf apache-jmeter- 4.0.taz.gz
2)在controller机器的jmeter的bin目录下,找到jmeter.properties文件,编辑该文件,将slave设备的地址均写入该文件,如:
修改:remote_hosts=192.9.200.101:1099,192.9.200.102:1099,192.9.200.103:1099
3)运行所以slave机器上的jmeter-server文件,启动slave设备的jmeter服务,备注:window上运行jmeter-server.bat,linux上运行jmeter-server)
4)启动master机器上的jmeter.bat,选择菜单“运行”—>“远程启动”,可看到你将用来产生负载的slave机器,此时你将可以实现使用多态机器产生负载了。

一、Jmeter分布式执行原理:

1、Jmeter分布式测试时,选择其中一台作为调度机(master),其它机器做为执行机(slave)。
  2、执行时,master会把脚本发送到每台slave上,slave 拿到脚本后就开始执行。
  3、执行完成后,slave会把结果回传给master,master会收集所有slave的信息并汇总。

二、执行机(slave)配置:

3台执行机IP分别为 192.9.200.101,192.9.200.102,192.9.200.103

以下以192.9.200.101为例,其他两台机器执行步骤与以下步骤相同。

2.1 在执行机的jmeter的bin目录下,找到jmeter.properties文件,编辑该文件

修改以下为:
  server_port=1099

修改以下为:
  server.rmi.localport=1099

2.2 开启远程接口

在IP为192.9.200.101的执行机执行
  jmeter-server -Djava.rmi.server.hostname=192.9.200.101

nohup jmeter-server -Djava.rmi.server.hostname=localhost &

nohup jmeter-server -Djava.rmi.server.hostname=127.0.0.1 &

若需要 使远程服务器不挂断运行命令操作命令为: 经过验证可行,把服务器的连接工具都关了,也不影响压测!!!

nohup jmeter-server -Djava.rmi.server.hostname=192.9.200.101 &  

也就是说,使用这个命令,远程连接服务器的工具断网了,也不影响

[nacos@localhost bin]$ jmeter-server -Djava.rmi.server.hostname=192.9.200.101
Using local port: 8081
Server failed to start: java.rmi.server.ExportException: Listen failed on port: 8081; nested exception is: 
        java.io.FileNotFoundException: rmi_keystore.jks (没有那个文件或目录)
An error occurred: Listen failed on port: 8081; nested exception is: 
        java.io.FileNotFoundException: rmi_keystore.jks (没有那个文件或目录)

出现以上的报错信息,解决办法:

  • jmeter.property里面 server.rmi.ssl.disable 改为 true,表示禁用 ,这样就可以了

再次启动:

在这里插入图片描述

图中就表示成功了!

2.3 另两台机器,与以上步骤一致

再有一个问题就是端口的冲突,改为不冲突的端口即可!

注:slave执行机的配置,就目前而言只遇到这点问题,算是比较顺利!!

在IP为192.9.200.102的执行机执行
  jmeter-server -Djava.rmi.server.hostname=192.9.200.102

在IP为192.9.200.103的执行机执行
  jmeter-server -Djava.rmi.server.hostname=192.9.200.103

Jmeter主从模式部署常见的问题:url如下

https://blog.csdn.net/dev666/article/details/79776450?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162849094116780261987957%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=162849094116780261987957&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v29-2-79776450.first_rank_v2_pc_rank_v29&utm_term=Server+failed+to+start%3A+java.rmi.server.ExportException%3A+Listen+failed+on+port%3A+8081%3B+nested+exception+is%3A++++++++++java.io.FileNotFoundException%3A+rmi_keystore.jks+%28%E6%B2%A1%E6%9C%89%E9%82%A3%E4%B8%AA%E6%96%87%E4%BB%B6%E6%88%96%E7%9B%AE%E5%BD%95%29&spm=1018.2226.3001.4187

三、调度机(master)配置:

3.1 修改配置文件

在jmeter的bin目录下,找到jmeter.properties文件,编辑该文件  查找:
  remote_hosts=127.0.0.1
  修改为:
  remote_hosts=192.9.200.101:1099,192.9.200.102:1099,192.9.200.103:1099

(注意端口防火墙问题)

3.2 准备执行压测之前需要注意

如果进行压测的是脚本,需要将执行的脚本jar 放到 jmeter解压目录的 /apache-jmeter-5.3/lib/ext 目录下

3.2.1 获取 执行压测的脚本文件

也就是 jar-test.jmx 文件,这个文件通过可视化的界面完成,

  1. 创建线程组:

    在这里插入图片描述

  2. 添加线程计划:

    在这里插入图片描述

    1. 设定线程组:

      在这里插入图片描述
    2. 脚本界面说明:

    在这里插入图片描述

    1. 最后保存,将文件上传到服务器即可。

3.3 使用所有执行机

需要将可执行的jar脚本放到 /home/nacos/apache-jmeter-5.3/lib/ext 文件夹(执行机和调度机都有)中,

aase-TestPlan.jmx 执行脚本文件,随意放置一个文件夹下即可

jmeter -n -t 脚本名.jmx -r -l 生成的报告.jtl -r 表示启动远程服务器进行压测

jmeter -n -t aase-TestPlan.jmx -r -l res0810-1023-500user-300s.jtl

3.4 命令启动成功的界面

调度机: 收到了三个执行机的压测结果

在这里插入图片描述

以下分别是执行机:

192.9.200.103

在这里插入图片描述

192.9.200.102

在这里插入图片描述

192.9.200.101

在这里插入图片描述

四、如果是单个服务器使用主从模式

4.1 修改配置:

进入到安装jmeter的bin文件目录下,/home/nacos/apache-jmeter-5.3/bin 然后执行以下命令:

vim jmeter.properties

开启以下的字段,并将其值设置为以下的结果

remote_hosts=127.0.0.1:1099,127.0.0.1:1099
server_port=1099
server.rmi.localport=1099
server.rmi.ssl.disable=true

4.2 启动服务 & 压测

启动主从服务:下图所示

在这里插入图片描述

压测启动成功并收集到相关的数据,如下图所示

在这里插入图片描述

看到下图所示的结果,表示压测结束后:

在这里插入图片描述

4.3 对Linux压测好的数据进行可视化

将生成的 aa.tjl文件下载到Windows下,用解压好的jmeter.bat(解压目录下的bin目录下)启动脚本,

在这里插入图片描述

然后浏览aa.jtl文件就可以看到我们想要的结果图

在这里插入图片描述

五、在服务器内网使用连接可能与网络的连接的问题:

**背景:**使用finalShell远程连linux服务器后,使用sh jmeter.sh命令运行jmeter脚本,运行一段时间后,服务器出现断开连接的现象,脚本的运行也停止了。脚本的运行很不稳定。

问题:怎样才能使脚本不间断运行?

解决办法:在sh jmeter.sh命令前添加nohup命令,尾部加 & 即可,实现脚本的不挂断运行。这样在长时间执行压力测试时,就不用担心远程连接工具掉线从而影响测试结果的现象再发生。如果你想压20个小时,命令启动之后,可以关电脑,第二天再来看看压测的数据哦。
具体命令例子如下:

nohup jmeter -n -t TestPlan.jmx -r -l resuser.jtl  &

问题: 执行压测命令会有报错

jmeter -n -t aase-TestPlan.jmx -r -l res0810-1023-500user-300s.jtl

执行以上命令 ,会有以下报错信息

[nacos@localhost aaseJarTest]$ jmeter -n -t aase-TestPlan.jmx -r -l res0810-1023-500user-300s.jtl
Creating summariser <summary>
Created the tree successfully using aase-TestPlan.jmx
Configuring remote engine: 192.9.200.101:1099
Exception creating connection to: 192.9.200.101; nested exception is: 
        java.io.FileNotFoundException: rmi_keystore.jks (没有那个文件或目录)
Failed to configure 192.9.200.101:1099
Configuring remote engine: 192.9.200.102:1099
Exception creating connection to: 192.9.200.102; nested exception is: 
        java.io.FileNotFoundException: rmi_keystore.jks (没有那个文件或目录)
Failed to configure 192.9.200.102:1099
Configuring remote engine: 192.9.200.103:1099
Exception creating connection to: 192.9.200.103; nested exception is: 
        java.io.FileNotFoundException: rmi_keystore.jks (没有那个文件或目录)
Failed to configure 192.9.200.103:1099
Stopping remote engines
Remote engines have been stopped
Error in NonGUIDriver java.lang.RuntimeException: Following remote engines could not be configured:[192.9.200.101:1099, 192.9.200.102:1099, 192.9.200.103:1099]
An error occurred: Error in NonGUIDriver Following remote engines could not be configured:[192.9.200.101:1099, 192.9.200.102:1099, 192.9.200.103:1099]

解决方案:

再调度机安装jmeter的bin文件里

jmeter.property里面 server.rmi.ssl.disable 改为 true,表示禁用 ,这样就可以了

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
进行JMeter分布式部署压测,可以按照以下步骤进行操作: 1. 首先,确保已经下载并安装了JMeter。你可以从官方网站上找到详细的安装步骤。 2. 进入JMeter的安装目录,可以使用命令`cd /usr/local/apache-jmeter-5.3/bin`。 3. 在JMeter的安装目录下,找到`jmeter.properties`文件并进行配置。该文件包含了JMeter的各种配置项,包括分布式压测的相关配置。你可以根据需要修改这些配置项,以满足你的压测需求。 4. 配置调度机。在JMeter分布式压测中,调度机负责控制整个压测过程。你需要在调度机上启动JMeter,并配置调度机的信息,如IP地址、端口等。具体的配置步骤可以参考官方文档。 5. 配置执行机。执行机是实际执行压测任务的机器。你需要在执行机上启动JMeter,并设置执行机的信息,如IP地址、端口等。执行机会接收调度机发送的压测任务,并按照任务进行压测。同样,具体的配置步骤可以参考官方文档。 6. 配置Jenkins、Grafana和Prometheus等工具。这些工具可以帮助你更方便地进行压测任务的管理和监控。你可以将JMeter与这些工具集成,以便更好地监视和分析压测结果。 通过以上步骤,你就可以完成JMeter分布式部署压测配置。在进行压测之前,确保所有的机器都已正确配置,并且可以相互通信。这样,你就可以开始进行分布式压测了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【性能测试JMeter分布式压测部署](https://blog.csdn.net/weixin_46361114/article/details/121777501)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Jmeter 分布式压测部署](https://blog.csdn.net/weixin_47498496/article/details/112542828)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [linux下Jmeter分布式压测](https://download.csdn.net/download/weixin_38695159/14053948)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

皮皮攻城狮

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

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

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

打赏作者

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

抵扣说明:

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

余额充值