关闭

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

标签: JMeter测试JMeter 多台机器Jmeter AgentJMeter性能测试
5987人阅读 评论(1) 收藏 举报
分类:

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机器的时间设置一致,再次测试,问题基本解决了。


0
0
查看评论

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
  • 30066

java.net.connectexception connection timed out connect 加载配置

加载配置文件的时候数据库是可以连上的,但是反复的报这个错,最后终于在google找到问题。 部分xml文件开头为: 统一修改为: xml解析的问题,小小的tricky,折腾阿。 以下为原文摘自引用: 链...
  • Jason69181
  • Jason69181
  • 2012-03-23 17:23
  • 6211

到主机 的 TCP/IP 连接失败 java.net.ConnectException: Connection timed out

org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (到主机  的 TCP/IP 连接失败。 java.net.ConnectException: Connection ti...
  • YJHAndYW
  • YJHAndYW
  • 2012-08-04 13:01
  • 21875

压测netty框架,返回少量java.net.ConnectException:Connection timed out,优化代码

xx项目需要做性能测试,开发端主要是netty框架,500并发TPS能达到7000+,但是返回少量  Connection timed out,原因有可能是代码有问题,也有可能仅是客户端主动关闭了连接,导致服务端的写失败,linux服务器本身无法处理如此大量请求,监控到客户端并未有大量C...
  • haoluojie
  • haoluojie
  • 2017-12-10 15:08
  • 178

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

Jmeter-多台联机,远程失败ERROR - jmeter.engine.ClientJMeterEngine
  • miss_hua
  • miss_hua
  • 2016-01-08 17:15
  • 5061

java.net.SocketTimeoutException: Read timed out

今天在一台虚拟机上部署公司项目的时候,出现java.net.SocketTimeoutException: Read timed out的问题最后定位到如下地方:   httpURL = new URL(url);   System.out.prin...
  • luo_yifan
  • luo_yifan
  • 2010-06-26 17:23
  • 100824

JMeter(二)——使用Jmeter进行压测

Jmeter压测
  • qiubt__123
  • qiubt__123
  • 2015-12-28 15:59
  • 1494

java.net.ConnectException: Connection timed out: connect 错误

[java] view plaincopyprint? java.net.ConnectException: Connection timed out: connect     ...
  • iamiwangbo
  • iamiwangbo
  • 2015-09-11 15:53
  • 1537

异常:java.net.ConnectException: Connection timed out: no further information

是由于目标主机无法访问,
  • wfjolre
  • wfjolre
  • 2014-06-06 16:27
  • 11332

【已解决】Exception java.net.ConnectException: Error opening socket to server Connection timed out.

使用db2 data studio链接服务器的数据库的时候显示如下错误:SQL4499N Ensure that the data server has been started. Check that the database name used is the actual database n...
  • voilethht
  • voilethht
  • 2015-08-25 14:35
  • 3072
    个人资料
    • 访问:873039次
    • 积分:11338
    • 等级:
    • 排名:第1655名
    • 原创:406篇
    • 转载:112篇
    • 译文:0篇
    • 评论:65条
    博客专栏
    最新评论