用于ant任务的具有Not Gui模式的JMeter不在从属节点

时间:2016-07-22 20:56:22

标签: java jenkins ant jmeter

我已根据本手册配置了JMeter群集测试 - JMeter Distributed Testing Step-by-step

两台计算机都是 CentOS 6 ,并且已禁用防火墙,并且具有相同版本的JMeter。

Project已使用JMeter的 Java示例 构建:

enter image description here

所有电话都将结束。通过RMI调用,如果准确的话。

主节点配置

使用从属IP

更新了jmeter.properties
  

运行Jenkins作业 - >蚂蚁电话JMeter ant task - >在Jmeter上启动测试(它使用java的采样器构建了jar)。

     

JDK 1.7.25 / ant 1.9.4 / JMeter 2.11;

从属节点配置:

  

JDK 1.7.90 / ant 1.7.1 / JMeter 2.11;

已开始jmeter-server

启动测试作业后。它仅在主节点上执行。发送到从节点的请求没有发生 我无法理解为什么会发生这种情况。

以下是来自 ant任务 的摘录:

<target name="jmeter-test" depends="jmeter-init, is_run_remote">
    <jmeter jmeterhome="${jmeter.home}"
            testplan="${basedir.unix}/${test.testplan.path}"
            resultlog="${basedir.unix}/${results.report.jmeter.generated.path}"
            failureproperty="test_failed"
            runremote="${is_remote}">
        <!-- jvm settings -->
        <jvmarg value="-Xms${jvm.xms}"/>
        <jvmarg value="-Xmx${jvm.xmx}"/>
        <!-- jmeter remoting properties -->
        <property name="remote_hosts" value="${remote_hosts}" />
        <property name="client.rmi.localport" value="${client.rmi.localport}" />
        <property name="java.rmi.server.hostname" value="${java.rmi.server.hostname}" />
        <property name="server.exitaftertest" value="${server.exitaftertest}" />
        <property name="client.rmi.localport" value="${client.rmi.localport}" remote="true" />
        <property name="server.rmi.localport" value="${server.rmi.localport}" remote="true" />
        <property name="sample_sender_client_configured" value="${sample_sender_client_configured}" remote="true" />
        <property name="mode" value="${remote.results.sending.mode}" remote="true" />
        <property name="asynch.batch.queue.size" value="${asynch.batch.queue.size}" remote="true" />

jmeter.log的主要区别在于通常的测试是通过编译采样器来完成的:

jmeter.functions.StringFromFile: setParameters(${LISTING_USERS_CSV}) 
2016/07/19 14:36:17 INFO  - jmeter.functions.StringFromFile: setParameters(${LISTING_USERS_CSV}) 
2016/07/19 14:36:17 INFO  - jmeter.functions.StringFromFile: setParameters(${LISTING_USERS_CSV}) 
2016/07/19 14:36:17 INFO  - jmeter.functions.StringFromFile: setParameters(${LISTING_USERS_CSV}) 
2016/07/19 14:36:17 INFO  - jmeter.functions.StringFromFile: setParameters(${LISTING_USERS_CSV}) 
2016/07/19 14:36:17 INFO  - jmeter.functions.StringFromFile: setParameters(${LISTING_USERS_CSV}) 
2016/07/19 14:36:17 INFO  - jmeter.functions.StringFromFile: setParameters(${LISTING_USERS_CSV}) 
2016/07/19 14:36:17 INFO  - jmeter.functions.StringFromFile: setParameters(${LISTING_USERS_CSV}) 
2016/07/19 14:36:17 INFO  - jmeter.protocol.java.sampler.JavaSampler: Created class: post.PostFreightSearchSampler. Uses tearDownTest: false 
2016/07/19 14:36:17 INFO  - jmeter.protocol.java.sampler.JavaSampler: Created class: post.PostVehicleSearchSampler. Uses tearDownTest: false 
2016/07/19 14:36:17 INFO  - jmeter.protocol.java.sampler.JavaSampler: Created class: post.region.PostFreightRegionalSearchSampler. Uses tearDownTest: false 
2016/07/19 14:36:17 INFO  - jmeter.protocol.java.sampler.JavaSampler: Created class: post.region.PostVehicleRegionalSearchSampler. Uses tearDownTest: false 
2016/07/19 14:36:17 INFO  - jmeter.protocol.java.sampler.JavaSampler: Created class: post.country.PostFreightCountrySearchSampler. Uses tearDownTest: false 
2016/07/19 14:36:17 INFO  - jmeter.protocol.java.sampler.JavaSampler: Created class: post.country.PostVehicleCountrySearchSampler. Uses tearDownTest: false 
2016/07/19 14:36:17 INFO  - jmeter.protocol.java.sampler.JavaSampler: Created class: search.execute.ExecuteFreightSearch. Uses tearDownTest: false 
2016/07/19 14:36:17 INFO  - jmeter.protocol.java.sampler.JavaSampler: Created class: search.execute.ExecuteVehicleSearch. Uses tearDownTest: false 
2016/07/19 14:36:17 INFO  - jmeter.protocol.java.sampler.JavaSampler: Created class: search.execute.ExecuteFreightSearch. Uses tearDownTest: false 
2016/07/19 14:36:17 INFO  - jmeter.protocol.java.sampler.JavaSampler: Created class: search.execute.ExecuteVehicleSearch. Uses tearDownTest: false 

在远程运行的情况下,它有不同的行为:

jmeter.engine.ClientJMeterEngine: sent test to 127.0.0.1 basedir='.'
... set the run props
jmeter.engine.ClientJMeterEngine: sent run command to 127.0.0.1 
2016/07/25 14:59:13 INFO  - jmeter.JMeter: Remote engines have been started 
2016/07/25 14:59:13 INFO  - jmeter.JMeter: Started remote host:  127.0.0.1 (1469447953598) 
2016/07/25 14:59:13 INFO  - jmeter.samplers.SampleResult: Note: Sample TimeStamps are START times 
2016/07/25 14:59:13 INFO  - jmeter.samplers.SampleResult: sampleresult.default.encoding is set to ISO-8859-1 
2016/07/25 14:59:13 INFO  - jmeter.samplers.SampleResult: sampleresult.useNanoTime=true 
2016/07/25 14:59:13 INFO  - jmeter.samplers.SampleResult: sampleresult.nanoThreadSleep=5000 
2016/07/25 14:59:13 INFO  - jmeter.reporters.Summariser: summary =      1 in     0s = ******/s Avg:     0 Min:     0 Max:     0 Err:     1 (100.00%) 
2016/07/25 14:59:13 INFO  - jmeter.JMeter: Finished remote host: 127.0.0.1 (1469447953740) 

如何进行分布式测试?

2 个答案:

答案 0 :(得分:1)

你需要运行&#34; jmeter-server&#34;在Jmeter master&amp;客户机。

然后像这样执行你的脚本。

./ jmeter -n -t jmeterscript.jmx -R 172.0.0.1(master-ip),(slave-ip)-l logfile.jtl

参考: http://jmeter.apache.org/usermanual/remote-test.html

答案 1 :(得分:1)

接下来是解决方案:

    Slaves机器上的
  1. 更正了<object data="img/failedToLoad.png" type="image/png">Alternative Text</object>

    DIRNAME = jmeter-server

    RMI_HOST_DEF = -Djava.rmi.server.hostname = 10.6.216.XXX

    $ {DIRNAME} / jmeter $ {RMI_HOST_DEF} -Dserver_port = 60000 -s -j jmeter-server.log&#34; $ @&#34;

  2. 取消注释 RMI_HOST_DEF 并分配本机的IP地址,并指定端口 - 60000(默认值为1)。

    在主工作站(Windows 8.1)上适应Slaves架构(CentOS 6)的测试计划 - 更新了所有到Unix风格的资源路径,并以相同的方式为每个从属实例找到它们。

    1. 使用主要mashine的IP地址和端口更正dirname $0

      remote_hosts = 10.6.216.XXX:60000,10.6.216.XXX:60000

    2. 在所有从属设备上启动remote-hosts

      [user @ ECSC00103331~] $ jmeter-server 使用本地端口:60000 创建的远程对象:UnicastServerRef [liveRef:[endpoint:10.6.216.40:60000,objID:[2f100b79:15630b4bb73:-7fff,6552789263830402879]]

      每个实例的值jmeter-server也增加了:

    3.   

      ulimit -u 50000

      默认情况下, 1024 。您可以使用ulimit命令进行检查。

      1. 从JMeter UI开始运行 - ulimit -a - &gt; Run。 CentOS控制台的代码片段:

        在主持人上开始测试10.6.216.XXX:60000 @Thu 7月28日11:53:12 MSK 2016(1469695992526) SLF4J:类路径包含多个SLF4J绑定。 SLF4J:在[jar:file:/etc/jmeter/lib/slf4j-nop-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]中找到绑定 SLF4J:在[jar:file:/var/lib/jenkins/jobs/Fx-Performance-Tests-RMI/workspace/fx-performance-tests/lib/slf4j-log4j12-1.7.10.jar!/ org /中找到绑定SLF4J / IMPL / StaticLoggerBinder.class] SLF4J:有关解释,请参阅http://www.slf4j.org/codes.html#multiple_bindings。 SLF4J:实际绑定的类型为[org.slf4j.helpers.NOPLoggerFactory] 未捕获的异常org.apache.jorphan.util.JMeterError:无法返回样本。有关详细信息,请参阅日志文件。

      2. 即使有这个奇怪的例外,它也能正常工作。