Jmeter 多台机器产生负载及问题解决方法

转载 2015年11月18日 17:36:56

JMeter 使用多台机器产生负载的操作步骤如下:

        关于linux环境运行jmeter,分布式测试 见 http://www.51testing.com/html/55/383255-847895.html

  (1)在所有期望运行jmeter作为 负载生成器的机器上安装jmeter, 并确定其中一台机器作为 controller ,其他的的机器作为agent 。然后运行所有 agent 机器上的jmeter-server 文件(假定使用两台机器192.168.0.100 和192.168.0.101 作为agent)

  (2)在controller机器的jmeter的bin目录下,找到jmeter.properties 文件,编辑该文件:

  查找:

  remote_hosts=127.0.0.1

  修改为:

  remote_hosts=192.168.0.100:1099,192.168.0.101:1099

  这里要特别注意端口后,有些资料说明端口1644为jmeter的controller 和agent 之间进行通信的默认RMI端口号,但是在测试时发现,设置为1644运行不成功,改成1099后运行通过。另外还要留意agent的机子是否开启了防火墙等。

  (3)启动controller 机子上的jmeter应用,选择菜单“运行”--->“远程启动”,来分别启动agent ,也可以直接选择“远程全部启动”来将所有的agent启动。

原文地址: http://www.cnblogs.com/heygirl/p/4908853.html

注意问题(非常重要):
在分布式的测试中,会遇到很多问题,如:
(1)控制机 连不上 agent 机
解决方法:telnet 192.168.1.117 1099  看IP 端口通不通,如果通 OK,不通,检查防火墙

(2)agent 机 连不上控制机
查看 agent 机上,日志文件:jmeter-server.log,看具体的报错提示;另外,查看 jmeter-server 这个服务绑定该 agent机的IP是否正确,如果绑定的IP不正确,肯能是 C:\Windows\System32\drivers\etc中HOST文件中设置有问题。

最好的方法就 agent和controller机器都是新安装的干净的机器,不然会有一堆的问题,让你崩溃。

(3)各个agent和controller机器上的时间必须是同步的,要不然 最后的结果会有差别,这个非常重要。

* 遇到的问题及解决方法

Controller 机(192.168.1.117);Agent 机器(192.168.1.132)
Agent 机 上的jmeter-server已经启动OK;

遇到的问题:

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

解决方法:

(1)telnet 192.168.1.132 1099  是通的,说明 控制机 连agent 机是OK了,问题排除。

(2)查看 agent机上 c:\apache-jmeter-2.13\bin 中 jmeter-server.log 日志文件,发现有错误: jmeter.samplers.RemoteListenerWrapper: testStarted(host) java.rmi.ConnectException: Connection refused to host: 169.254.123.36; nested exception is: 
java.net.ConnectException: Connection timed out: connect
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(Unknown Source)
at sun.rmi.transport.tcp.TCPChannel.createConnection(Unknown Source)
at sun.rmi.transport.tcp.TCPChannel.newConnection(Unknown Source)
at sun.rmi.server.UnicastRef.invoke(Unknown Source)
at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(Unknown Source)
at java.rmi.server.RemoteObjectInvocationHandler.invoke(Unknown Source)
at $Proxy1.testStarted(Unknown Source)
at org.apache.jmeter.samplers.RemoteListenerWrapper.testStarted(RemoteListenerWrapper.java:85)
at org.apache.jmeter.engine.StandardJMeterEngine.notifyTestListenersOfStart(StandardJMeterEngine.java:216)
at org.apache.jmeter.engine.StandardJMeterEngine.run(StandardJMeterEngine.java:336)
at java.lang.Thread.run(Unknown Source)

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

问题产生了: 为何 控制机 IP变成了 169.254.123.36, IP不是 192.168.1.117 吗?(问题的根源在于:我安装的VMware的一个windows虚拟机的网络设置成了“Bridge 并勾选 Replicate physical network IP address所以在controller机器的网络路由设置中,显示的网络连接为:VirtualBox Host-Oly Network,在这个连接上右键,选择“Disable“,禁用掉,然后重新运行jmeter-server.bat,在窗口中发现IP已经正确了,这样问题就解决了) 估计问题就在这里。

(3) 果断换了一台新安装的 windows 机器作为控制机,然后 重新试了一下,没有问题。在控制机运行测试,agent机器会收到测试“Starting the test on host 192.168.1.132:1099 @ **”,执行结束后,agent机上有日志“Finished the test on host 192.168.1.132:1099 @ ***”,控制机上也有相应的测试结果,问题解决。

总结: 问题还是 连接的问题,如果控制机和agent机连接有问题,就会有此类问题,所以建议 控制机和测试机都是干净的机器,这样避免 安装了一些软件,修改了 C:\Windows\System32\drivers\etc中HOST文件,等问题。


测试中发现的问题:

(1) 发现用一台 client 200个用户测试和 用分布式 2个agent 各自100个用户,测试出来的结果 差别太大,不知道为什么?

(2)  发现用一台 client 200个用户测试和 用分布式 2个agent 各自200个用户,测试出来的结果 结果基本是一致的,不知道为什么?

如果真是这样的话,那么jmeter分布式测试出来的结果太不科学了,我们到底相信那个? 问题持续研究中......

这两个问题解决方案:

把controller机器,2个agent机器的时间设置一致,再次测试,问题基本解决了。


相关文章推荐

JMeter测试问题java.net.SocketTimeoutException: connect timed out,Read timed out

最近使用JMeter执行分布式性能测试,对HTTP服务器(Apache2)进行压测。在线程组的线程数增加到一定值时,有概率产生connect timed out和Read timed out错误。关于...
  • ajupiter
  • ajupiter
  • 2013年07月05日 14:39
  • 26410

Jmeter-多台联机,远程失败ERROR - jmeter.engine.ClientJMeterEngine

Jmeter-多台联机,远程失败ERROR - jmeter.engine.ClientJMeterEngine

Jmeter进行性能测试时多台负载机的配置方法

Jmeter 是java 应用,对于CPU和内存的消耗比较大,因此,当需要模拟数以千计的并发用户时,使用单台机器模拟所有的并发用户就有些力不从心,甚至会引起JAVA内存溢出错误。为了让jmeter工具...
  • russ44
  • russ44
  • 2017年01月25日 13:53
  • 3667

Jmeter进行性能测试时多台负载机的配置方法

Jmeter进行性能测试时多台负载机的配置方法 【背景】在进行性能测试时,需要模拟多用户并发访问,但是由于单台负载机模拟用户数量有限,我们期望使用多台负载机进行负载模拟,利用JMeter进行性能测试...
  • aovenus
  • aovenus
  • 2012年02月23日 22:12
  • 7411

jmeter远程连接负载机出现报错解决方法

在进行jmeter分布式测试的时候,有时候启动所有负载机会出现下图错误: 下面小编给出几个排除方法: 1、检查负载机和主控机ip是否可以ping通 2、检查负载机防火墙是否关闭 ...

【Jmeter】分布式远程启动

在压测需求较大并发量时,如1000以上,但是单台客户端难以实现,因此需要多台客户端并行,并且能同步控制jmeter的分布式控制 客户端机器作为一个控制器controller,控制多台slave机器的操...

jmeter中java协议请求

测试工具:myecplise10.5 jdk版本:1.8.73 jmeter: 2.13   一、核心步骤 1.创建一个Java工程; 2.将JMeter的lib目录下的jar文件添加进此...
  • testmjl
  • testmjl
  • 2017年05月02日 11:43
  • 554

JMeter完成java请求的压力测试详解以及问题总结

JMeter完成java请求的压力测试 原文地址:http://www.cnblogs.com/zhaoxd07/p/4895224.html    作者:KK_Yolanda 这篇文章已经写得比较全...

Jmeter远程启动负载机

1.负载机下载Jmeter,设置环境变量,jmeter中进行启动jmeter-server的应用服务。环境变量设置如下: 变量名:JMETER_HOME 变量值:C:\Program Files\...

调用远程主机上的RMI服务时抛出java.rmi.ConnectException: Connection refused to host: 127.0.0.1异常原因及解决方案

最近使用jmx遇到一个问题,client/server同在一台机器上,jmx client能够成功连接server 如果把server移植到另一台机器上10.1.60.14,抛出如下异常: ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Jmeter 多台机器产生负载及问题解决方法
举报原因:
原因补充:

(最多只允许输入30个字)