Jmeter 分布式压测记录遇到的坑【持续更新中】

这边我把 Windows 的作为主控机,远程操作的叫 傀儡机

一、远程启动傀儡机,未能正确返回响应信息

 Jmeter 启动远程测试后,傀儡机器收到了测试任务,
 且控制台显示:”Starting the test on host 192.168.1.1:5555 @ ***“,
 说明主控机分派给傀儡机上的测试任务启动成功,但是一直卡在这里不动了,
 图形化 Jmeter 一直没有显示响应,而且无法关闭(关闭就是提示:测试进行中)

解决办法:

  1. 先用主控机 Ping 傀儡机,是否可以 Ping 的通
  2. 如果报错连接超时丢包,关闭傀儡机的防火墙,然后再次请求
  3. 如果主控机 Ping 傀儡机成功,就反向拿傀儡机 Ping 主控机
  4. 如果报错连接超时丢包,关闭主控机的防火墙,然后再次请求

二、控制傀儡机读取CSV文件失败

Jmeter 脚本内添加了 CSV 参数文件,
启动远程测试后,傀儡机器收到了测试任务,但是响应没有返回
查看 jmeter-server.log 发现类似如下的报错信息:
java.lang.IllegalArgumentException: File jmeter_DLL.txt must exist and be readable
原因是 windows本地是磁盘目录,跟Linux的jmeter安装目录有差别导致CSV无法正确读取

解决办法:

  1. 将【脚本文件】和 【CSV文件】 统一放到 windows和Linux 的Jmeter 安装的 bin 目录下
    在这里插入图片描述
    在这里插入图片描述

  2. 本机 Jmeter 修改CSV文件的相对路径去调用参数,再远程启用傀儡机

  3. 相对路径的使用注意点:直接以 bin 目录下的子级文件名打头,不需要加 ’ / ‘
    在这里插入图片描述


三、连接Linux傀儡机启动 Jmeter 应用失败

Linux 傀儡机启动 Jmeter ,在安装文件的 bin 目录下使用命令 :  ./jmeter-server
出现报错信息:
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c0000000, 1073741824, 0) failed; error='Cannot allocate memory' (errno=12)
	 There is insufficient memory for the Java Runtime Environment to continue.
	 Native memory allocation (mmap) failed to map 1073741824 bytes for committing reserved memory.
	 An error report file with more information is saved as:
	 /usr/local/src/kafka_2.10-0.10.0.1/bin/hs_err_pid5584.log

解决办法:

减少 Jmeter 应用集中分配的 JVM 内存【改变初始堆内存和最大堆内存】:

  1. Linux :cd 到 Jmeter 安装目录的 bin 目录下执行: vim jmeter
  2. 修改【1g】字段为【124m】:”${HELP:=" -Xms124m -Xmx124m -XX:MaxMetaspaceSize=256m “}”
  3. 【:wq! 】保存文件并退出后,再次 ./jmeter-server 启动Jmeter应用

四、连接 Linux 傀儡机启动 Jmeter报错 rmi_key 问题

Linux 傀儡机启动 Jmeter ,在安装文件的 bin 目录下使用命令 :  ./jmeter-server
出现报错信息:
Server failed to start: java.rmi.server.ExportException: Listen failed on port: 0; nested exception is:
	java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)
	An error occurred: Listen failed on port: 0; nested exception is;
	java.io.FileNotFoundException: rmi_keystore.jks (No such file or directory)

解决办法:

jmeter.properties 文件禁用 SSL 即可解决:

  1. Linux :cd 到 Jmeter 安装目录的 bin 目录下执行: vim jmeter.properties
  2. 查找定位到:server.rmi.ssl.disable 改为 true ,表示禁用
  3. 【:wq! 】保存文件并退出后,再次 ./jmeter-server 启动Jmeter应用

五、主控机远程启动傀儡机,出现连接错误问题

Linux 傀儡机启动 Jmeter ,在安装文件的 bin 目录下使用命令 :  ./jmeter-server
出现报错信息:
java.lang.RuntimeException: 
	Following remote engines could not be configured:[192.168.0.33:3211]
或者是:
java.rmi.ConnectException: Connection refused to host: 192.168.0.33; nested exception is: 
	java.net.ConnectException: Connection refused: connect
或者是:
	包含:rmi.port[3211] :Address already in use : connect 这样的

解决办法:

原因是端口占用,杀掉进程即可:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值