zoukankan      html  css  js  c++  java
  • Jmeter 多台机器产生负载及问题解决方法

    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:WindowsSystem32driversetc中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.13in 中 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:WindowsSystem32driversetc中HOST文件,等问题。

  • 相关阅读:
    vue+vuex构建单页应用
    vue如何做分页?
    cookie和session的原理机制
    经常遇到js的面试题
    CSS浏览器兼容性问题解决方法总结
    前端性能优化----yahoo前端性能团队总结的35条黄金定律
    bom对象
    正则表达式
    JavaScript
    常见浏览器bug以及解决方法
  • 原文地址:https://www.cnblogs.com/insane-Mr-Li/p/10701831.html
Copyright © 2011-2022 走看看