Jmeter分布式运行时遇到的问题及解决办法--Lph

Jmeter压测过程中遇到的那些事

1.      内存溢出

现象:GUI界面上,线程卡住,查看DOS窗口,提示内存溢出

解决方法:打开jmeter.bat文件,把set HEAP=-Xms512m –Xmx1024m修改为set HEAP=-Xms512m-Xmx512m。

为何要如此设置,不清楚原因。需要大牛指点原因。

2.      slave启动jmeter-server.bat,提示“Could notfind ApacheJmeter_core.jar”

原因:程序找到jmeter下的文件,是因为没有配置JMETER_HOME

解决方法:

(1)高级系统配置->环境变量,新建系统变量:JMETER_HOME等于你jmeter保存的根目录

(2)系统环境变量path中增加%JMETER_HOME%\bin。

然后重启jmeter-server.bat。jmeter环境是基于Java环境已配置。

3.   客户机可以正常ping通,但是不支持master访问,jmeter_server.bat也正常启动。

原因:客户机的防火墙没有关闭。最好两边防火墙都关闭。

4.  非GUI下启动远程服务器

(1)启动全部远程服务器,即启动jmeter.properties文件中remote_hosts配置的所有远程服务器;

   命令如下:jmeter -n -t .\Mark\search_list.jmx -r

(2)启动指定的远程服务器

   命令如下:jmeter -n -t .\Mark\search_list.jmx -R server1,server2

5.启动jmeter-server.bat时抛出了如下异常 (用过-是可以的)

  1.  
    Server failed to start: java.rmi.server.ExportException: Listen failed on port:
  2.  
    0; nested exception is:
  3.  
            java.io.FileNotFoundException: rmi_keystore.jks (系统找不到指定的文件。)
  4.  
     
  5.  
    An error occurred: Listen failed on port: 0; nested exception is:
  6.  
            java.io.FileNotFoundException: rmi_keystore.jks (系统找不到指定的文件。)
  7.  
    errorlevel=1

     

     

问题分析
1.可能监听的端口被占用,修改端口号
2.Server相关的rmi配置需要调整
解决方案 -(用过是可以的)
在目录\apache-jmeter-5.0\bin下,用Notepad++编辑器打开名为jmeter.properties的文件
找到server.rmi.ssl.disable=false,改为true,并把前面的#去掉
保存配置调整,重新启动jmeter-server.bat即可恢复正常。

这个最好在做分布式的时候,控制机和代理机的jmeter.properties文件这个地方一并修改,不修改还是会报错。

6.jmeter-server.bat启动报:WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002.

 尝试使用 :以管理员身份启动。

7.Don't use GUI mode for load testing

这个是说不要用jmeter界面操作运行,网络上很多说正式测试最好用命令执行运行,不是很懂,但在jmeter界面操作运行也没什么问题。

(1)切换到jmeter的bin目录;

以命令行的方式启动:jmeter.bat -n -t C:\Users\Administrator\Desktop\测试文件\压力测试文件\分布式.jmx -l demo_lt.jtl -e -o C:\lt

注:
此处指定结果文件为demo_lt.jmx,运行后生成的结果文件(可以指定生成位置,没有指定就在jmeter的bin目录下):
demo_lt.jtl;统计目录为C:\lt

(2) 查看运行结果
运行JMeter,在导航栏中点击“ 查看结果树”,主界面中点击“浏览”,选择生成的结果文件demo_lt.jtl,效果如下图所示:

图4 查看结果树

(3) 查看统计结果
打开目录C:\lt,点击该目录下的index.html,可以看到详细的统计结果。下面两张图分别截取了性能指标和综合统计信息部分。

图5 性能指标

图6 综合统计信息

8. 分布式下测试master机器没有返回结果

slave机器服务终端显示,但是一个非常简单的脚本,执行超级慢,感觉不应该:

Starting the test on host 192.168.5.158:1099 @ Fri Aug 17 14:00:44 GMT+08:00 2018 (1534485644989)
Finished the test on host 192.168.5.158:1099 @ Fri Aug 17 14:05:18 GMT+08:00 2018 (1534485918786)

master机器没有返回结果。

解决:

1.怀疑jmeter环境变量配置,反复查看没有问题

2、怀疑jmeter.properties文件修改错误,反复查了master、slave机器的配置文件,没有问题

3、将问题转向机器IP,查看master机器IP,slave机器IP,都用的固定IP,没有问题

4、重新启动master机器的jmeter-server.bat,发现了和slave机器异样的地方,master机器显示的endpoint:IP是Vmware network Adapter vmnet1(安装VMWare的虚拟IP),jmeter-server启动的时候自动识别了虚拟机IP,没有识别本地网络IP

5、将网络适配器中的虚拟适配器禁用掉,重新启动jmeter-server.bat,endpoint变成了本地IP,再次尝试远程执行,成功,复杂的脚本执行也很快。

最终发现问题出现在第四个上:(我按照第4,5个方式做了,但是最后又有了问题,下面是我的试验情况,以及这样会产生什么问题)

jmeter-server.bat启动时的ip是虚拟机的ip。可以在本地开启虚拟机,在本事使用 ipconfig查一下:

上面本机Jmeter-server.bat;启动显示的ip地址。本机jmeter.properties里设置的remote_hosts的ip址要与Jmeter-server.bat启动显示的ip地址一样。不要按照上面那样去禁用网络设配器的虚拟机适配器。如果禁用了网络设配器的虚拟机适配器,本机Jmeter-server.bat启动时它就会用无线网络的ip地址,那样你再把jmeter.properties里的remote_hosts,设置为无线网络的ip地址,那样agent(虚拟机中代理机)机就会响应请求、数据,而界面也会弹出错误,如下图:

禁用网络设配器的虚拟机适配器,再配置本地jmeter.properties里的remote_hosts为无线网络的ip地址的后果:

那样你在本机用:telnet  192.168.61.128(虚拟机ip) 1099;

发现连接不上;

而当你把禁用的网络设配器的虚拟机适配器启动;再把本地jmeter.properties里的remote_hosts设置为本地meter-server.bat启动时的ip,就会发现:telnet  192.168.61.128(虚拟机ip) 1099 成功。这是自身实践的结果,因为禁用了网络设配器的虚拟机适配器,而去用无线网络的ip导致一直报上图 refused  to host错误,再在去网络上找解决这个错误的方法,试了老半天没成功,最终还是启用禁用网络设配器的虚拟机适配器,使用虚拟机的ip才成功。这个是我自身的这错误的原因,希望大家对大家有借鉴作用。

补充:如果你在虚拟机发现telnet 169.254.202.187(本机中ipconfig出来虚拟机ip) 1099连接不同,可以对这个虚拟机适配器进行关闭,使用另外的ip尝试(一般总有一个能够连接上)

9、Jmeter分布式运行报该错误时:(用过)

Error in rconfigure() method java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
java.lang.ClassNotFoundException: kg.apc.jmeter.threads.UltimateThreadGroup (no security manager: RMI class loader disabled)

 

 

解决方法:(用过-可以)

 

 

 

10、Jmeter分布式运行时报该错误时(用过):Error in NonGUIDriver java.lang.RuntimeException:Following remote engines could not be configured/或者 Error in NonGUIDriver java.lang.RuntimeException: Could not find the  configured时 

在做了个负载测试跑半个小时候,再次编辑线程数保存,重新启动分布式运行时报如下错误:

 

 

解决方法: 重启一下拒绝连接的那台执行机,然后再重新启动jmeter server.bat,即可。(用过-可以)

 

 11、jmeter分布式报错,Error in rconfigure() method java.rmi.ConnectException: Connection refused to ho st

 

slave机器:Linux(4台)

准备压力机过程中,为方便省事,只配置了一台,其余3台是从这一台克隆过来的

执行分布式压测,返回如下error:

Error in rconfigure() method java.rmi.ConnectException: Connection refused to ho
st: 192.168.0.105; nested exception is:
java.net.ConnectException: Connection refused: connect

查看jmeter-server启动命令,发现slave机器使用的ip是克隆源ip

 

 

 

解决方法:slave机器上,bin目录下修改jmeter-server,改为slave机器ip(用过)

 

 12、刚跑完负载测试时,改变线程数再次跑分布式运行时,会报如下错误:

 

 

解决方法:将执行机与控制机的jmeter server.bat关闭重启即可,因跑完负载测试时,jmeter server.bat运行只有开始没有结束

 

 

 



———————————————
版权声明:本文为CSDN博主「fish_11」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Fish_11/article/details/77648645

posted @ 2021-12-02 11:40  Fecility  阅读(4541)  评论(0编辑  收藏  举报