我已根据本手册配置了JMeter群集测试 - JMeter Distributed Testing Step-by-step
两台计算机都是 CentOS 6 ,并且已禁用防火墙,并且具有相同版本的JMeter。
Project已使用JMeter的 Java示例 构建:
所有电话都将结束。通过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)
如何进行分布式测试?
答案 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
答案 1 :(得分: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;
取消注释 RMI_HOST_DEF 并分配本机的IP地址,并指定端口 - 60000(默认值为1)。
在主工作站(Windows 8.1)上适应Slaves架构(CentOS 6)的测试计划 - 更新了所有到Unix风格的资源路径,并以相同的方式为每个从属实例找到它们。
使用主要mashine的IP地址和端口更正dirname $0
:
remote_hosts = 10.6.216.XXX:60000,10.6.216.XXX:60000
在所有从属设备上启动remote-hosts
:
[user @ ECSC00103331~] $ jmeter-server 使用本地端口:60000 创建的远程对象:UnicastServerRef [liveRef:[endpoint:10.6.216.40:60000,objID:[2f100b79:15630b4bb73:-7fff,6552789263830402879]]
每个实例的值jmeter-server
也增加了:
ulimit -u 50000
默认情况下, 1024 。您可以使用ulimit
命令进行检查。
从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:无法返回样本。有关详细信息,请参阅日志文件。
即使有这个奇怪的例外,它也能正常工作。