JMeter 集群搭建方法整理

版本记录

日期人员类型版本说明
2019年12月22日dcmini创建v1.0.0

说明

在搭建JMeter 测试集群的过程中遇到了一些坑在这里做一些记录, 如果有什么问题欢迎大家在评论中指出。

存疑问题

序号说明是否解决解决日期
1如何使用命令行参数或者环境变量来改变JVM的运行参数
2JMeter server 启动时,在命令行中加上 server.rmi.ssl.disable 参数会失效,必须到jmeter.properties 文件中修改
3集群模式 server 读取 csv 文件是否有其他更好的方式,目前只能等分切分才能保证不重复读取

JMeter 简单说明

下载及安装

推荐去官网下载: https://jmeter.apache.org/download_jmeter.cgi

解压缩后就可以跑起来了。

ps:

  • 我不喜欢在 环境变量里配置 JMETER_HOME ,因为测试机器一般是临时开的有的时候还是借用其他环境的机器用完之后还要删除,感觉很麻烦。

如何查看说明文档

打开 $JMETER_HOME/printable_docs/index.html,这个和官方文档是一样的,离线看速度快一点儿。
在这里插入图片描述

$JMETER_HOME/bin 文件夹下文件的说明

  • jmeter: linux 环境下的启动脚本
  • jmeter-server:linux 环境下 server 的启动脚本
  • jmeter.bat:windows 环境下的启动脚本
  • jmeter-server.bat:windows 环境下 server 的启动脚本

这里需要注意的是 jmeter-server* 文件调用的还是 对应的 jmeter 文件,所以我们需要多 jmeter-server 进行的配置都需要在 jmeter 文件中找答案。
在这里插入图片描述

如何调整 JMeter 的JVM配置

因为 JMeter 是用 JAVA 编写的,所以其启动方法肯定就是运行 java -jar 这条命令,所以几乎所有的配置都是挂在这条命令之下的。我们可以看一下启动文件中都挂了哪些参数。
$JMETER_HOME/bin/jmeter 文件为例,在其最后一行前加上 echo 命令。
在这里插入图片描述然后我们启动 JMeter 就可以看到其拼写出来的 java -jar 命令

/Library/Java/JavaVirtualMachines/jdk1.8.0_191.jdk/Contents/Home/bin/java -server -XX:+HeapDumpOnOutOfMemoryError -Xms2g -Xmx2g -XX:MaxMetaspaceSize=512m -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:G1ReservePercent=20 -Djava.security.egd=file:/dev/urandom -Duser.language=en -Duser.region=EN -Xdock:name=JMeter -Xdock:icon="./../docs/images/jmeter_square.png" -Dapple.laf.useScreenMenuBar=true -Dapple.eawt.quitStrategy=CLOSE_ALL_WINDOWS -jar ./ApacheJMeter.jar

我们来理一下这些参数

  • -server JMeter单机启动也是启动一个 server ,地址是默认的 127.0.0.1
  • -XX:+HeapDumpOnOutOfMemoryError 当内存溢出的时候储存 heap dump文件,文件可以使用 JAVA 的 jhat 命令生成网页报告,也可以使用 Eclipse Memory Analyzer(MAT) 来生成报告。
  • -Xms2g JVM 初始分配的内存
  • -Xmx2g JVM 最大分配的内存
  • -XX:MaxMetaspaceSize Meta区最大
  • -XX:+UseG1GC 启动 G1 回收器
  • -XX:MaxGCPauseMillis 设置每次年轻代垃圾回收的最长时间
  • -XX:G1ReservePercent 设置堆内存保留为假天花板的总量
  • -Djava.security.egd JAVA 用于加快可靠算技术的产生
  • -Duser.language 用户语言
  • -Duser.region 用户区域
  • -Xdock:name dock 名字
  • -Xdock:icon dock 图标
  • -Dapple.laf.useScreenMenuBar 不知道是啥意思😿
  • -Dapple.eawt.quitStrategy 不知道是啥意思😢

我们打开 $JMETER_HOME/bin/jmeter 可以看到这些参数都是写在这份文件中的。
那么这里就有一个疑问了我们可以通过哪些方式来修改 JVM 的参数呢?

  • 修改 $JMETER_HOME/bin/jmeter 文件
  • 命令行参数
  • 环境变量

测试发现只能修改$JMETER_HOME/bin/jmeter文件能够修改。
这里我不是很理解为什么 JMeter 不设计然我们用命令行或者环境变量来修改JVM参数,可能是我没有找到,如果大家有知道的话请留言告诉我

集群说明

JMeter 的集群模式是主从结构,主控节点负责分发执行脚本,被控节点用于执行分发下来的脚本。
在这里插入图片描述

启动 被控节点 的 JMeter server

$ ./jmeter-server \
  -J server_port=40005 \
  -J server.rmi.localport=40005 \
  -J server.rmi.ssl.disable=true \
  -D java.rmi.server.hostname=192.168.0.3

当然大家也可以使用 nohup ... & 到后台运行

参数说明

  • server_port 服务监听端口
  • server.rmi.localport rmi 监听端口
  • server.rmi.ssl.disable rmi ssl 关闭
  • java.rmi.server.hostname rmi hostname 在多网卡的时候必须配置

在这里还是有一个问题,那就是有的时候 server.rmi.ssl.disable 这个配置好像是不生效的,需要到 jmeter.properties 文件中 将 server.rmi.ssl.disable 改成 =true 才可以。

主控节点 分发任务

这里可以使用GUI界面进行任务的下发, 也可以使用no-GUI模式下发,我还是喜欢后者,但是我没有比较过这两者在性能上有多大的差距,大家如果知道的话请告诉我。

$ ./jmeter \
  -R 192.168.2.243:40005 \
  -D java.rmi.server.hostname=192.168.1.78 \
  -n -t '/root/car_share_jmeter/jmx/MQTT-No1-01.jmx' \
  -l '/root/car_share_jmeter/result/MQTT-No1-00001-10000-1000-1-2019年12月20日首次.csv' \
  -G thread_numOfThreads=10000 \
  -G thread_rampUpPeriod=1000 \
  -G lp_pubMessage=7 \
  -G csv_deviceInfo='/root/car_share_jmeter/csv/10000/MQTT_TEST_01_10000.csv' \
  -G ct_pubMessage=570000

这里就算变贴一个以前项目的测试命令,参数说明

  • -R 远程 server 的地址,多个 server 用 , 隔开
  • -D rmi 的 hostname 多网卡的时候需要配置
  • -n 使用非GUI 模式启动
  • -t 测试脚本文件路径
  • -l 结果文件地址,这里也是有一个问题,那就是这个文件的目录必须事先创建好,感觉非常不方便。
  • -G 测试脚本的一些自定义参数,这里发现 -J 在集群模式下是不起作用的

主控节点 中途停止

以前我每一次要中途停止测试都是 ctrl + c 强制停止线程,后来发现这个方法好蠢。在 $JMETER_HOME/bin 目录下随便找一下就有 stoptest.sh 脚本,看名字就是用来中途停止测试的。

在主控节点上运行 ./stoptest.sh 就可以停止测试。

集群测试 CSV 文件的处理

很多时候我们需要让 JMeter 从 csv 文件中读取模拟用户的用户名和密码来模拟多用户登陆的场景,在单机模式时只要填写上文件路径就可以了,但是在集群模式下 各个 server 是不知道对方的存在的,所以需要我们自己来避免集群中的多个线程读取到同一条csv 文件记录。

我使用的方法是将csv文件按照 server 数量均匀拆分 并保存到 被控节点的相同目录下。

如果大家有更好的办法请告诉我。

要搭建Jmeter分布式压测集群,您需要按照以下步骤进行配置: 1. 下载Jmeter安装包,并在所有机器上进行安装。 2. 配置调度机: a. 启动Jmeter-server.bat文件。 b. 在控制机上编写完测试脚本后,点击运行。 c. 确保调度机和执行机在同一局域网中。 3. 配置执行机: a. 打开Jmeter安装目录中的bin目录下的Jmeter.properties文件。 b. 找到remote_hosts配置项,将其修改为执行机的IP地址和端口号。 c. 启动Jmeter-server.bat文件。 4. 执行压力测试: a. 在控制机上启动jmeter.bat文件。 b. 打开测试计划,配置相关参数,如请求的URL、线程数、持续时间等。 c. 运行测试计划。 这样,您就成功搭建了Jmeter分布式压测集群,多台机器将同时发起请求,以实现更高的并发量和负载测试能力。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Jmeter搭建分布式集群压测实战](https://blog.csdn.net/tiantianquan51/article/details/130576373)[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_2"}}] [.reference_item style="max-width: 50%"] - *2* [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_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值