Jmeter 分布式压测常见坑以及解决方案

前言

做性能测试的时候分布式是经常会使用的一种压测方案,但是很多同学在部署分布式压测环境的时候会出现各种问题,今天我们这篇文章就给大家把一些分布式搭建过程中的常见问题以及对应的解决方案进行汇总。

如果还有不会搭建的同学,可以参考这个文章完成分布式的环境搭建: 困扰很多人的分布式性能测试,原来如此简单!

常见错误和解决方案

错误1: 在主控机器下面远程启动助攻机的时候报错:

图片.png

解决方案: 这个链接超时,原因可能有2个:

1)你的主控机和助攻机的网络不通,检查一下网络的连通性:master端和slave端要ping通

2)ping通后,telnet ip port (Linux端),看一下1099端口是否被占用 【如果你修改了端口,就测试你修改后的端口】

3)你的助攻机服务没有启动: 使用./jmeter-server -D java.rmi.server.hostname=助攻机IP地址 启动你的助攻机

错误2:启动助攻机的时候报错Engine is busy-please try later.

图片.png

解决方案:这是因为助攻机上之前执行过脚本,可能处于繁忙状态。解决方案:

1)在停止jmeter测试的同时,使用master中的' Remote Stop all '选项,这会杀死远程机进程上正在运行的线程。或者直接在助攻机上 使用kill -9 进程号杀掉进程;

2)助攻机上的服务重启一下,也就是重新启动助攻机的服务器: ./jmeter-server -D java.rmi.server.hostname=助攻机IP地址
3)远程机的jmeter重新启动“jmeter-server.bat”,并重新开始测试。

错误3:脚本运行的过程中不报错,但是就是卡住无法收集到结果。

启动remote测试后,Agent机器收到任务,且控制台显示:”Starting the test on host 192.168.1.132:1099@***“,说明控制机分派上agent机上的测试成功,但是 一直卡在这里不动了,控制机一直没有显示任务执行状况以及收到测试结果(任务一直不结束,卡住了)。

图片.png

解决方案: 这个问题的原因我们可以通过助攻机上的 查apache-jmeter-5.2.1\bin 中 jmeter-server.log日志文件,发现有错误:

图片.png

推断原因是 agent 连不了控制机,被拒绝,连接超时。

这个原因可能是因为本地主控机有多个网卡,启动Jmeter的时候没有用跟助攻机连通的网卡,所以会链接超时:

1)修改一下Jmeter启动时使用IP地址就可以:在主控机的Jmeter.bat文件中查找set ARGS这一句,然后在其上面一行添加:

set rmi_host=-Djava.rmi.server.hostname=你跟主动即连通的IP地址【比如192.168.61.2】

2)然后在set ARGS这行最后加上空格 %rmi_host%

图片.png

3)在打开主控机的jmeter-server文件时,检查一下启动IP地址:

图片.png

如果修改完后还是不行,那么就是你的主控机的电脑的防火墙没有关闭。一定要关闭主控机所有的防火墙:

图片.png

错误4: 阶梯压测助攻机执行失败

129b32f6c91a403788aaefe9192e361f.png

解决方案:这是因为助攻机下的Jmeter里没有阶梯压测的插件:把windows电脑安装了插件的Jmeter工具压缩一下上传到助攻机上解压使用,就可以了。

错误5:分布式执行的图显示不正确,不是随着时间的线形图:

249456fd13484723913484410a9e6f62.png

解决方案:助攻机的时间跟主控机的时间保持一致。date看下时间,如果不一致,ntp同步一下时间。

总结

把常见的错误以及对应解决方案都列出来,大家如果遇到对应的问题,按照这个去解决就可以了。

2 操作
tricy 在 2024-12-13 17:58:38 更新了该帖
tricy 在 2024-12-13 17:52:44 更新了该帖
回帖
请输入回帖内容 ...