I have configured JMeter cluster testing according to this manual - JMeter Distributed Testing Step-by-step
Both machines are CentOS 6 with disabled firewalls and have the same version of JMeter.
Project has built with JMeter's Java Samples:
All calls are going to back end. Through RMI calls, if to be accurate.
Master node configuration:
Updated jmeter.properties
with slave IP
Run Jenkins job -> ant calls JMeter ant task -> launches test on Jmeter (it has built jar with java's sampler).
JDK 1.7.25 / ant 1.9.4 / JMeter 2.11;
Slave node configuration:
JDK 1.7.90 / ant 1.7.1 / JMeter 2.11;
Started jmeter-server
.
After launching test job. It executes only on the master node. Request sending to slave node didn't happen.
I couldn't get a klue why this happenning.
Here is snippet from ant task:
<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" />
The main difference from jmeter.log
is that usual test goes through compiling Samplers:
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
At case of remoting run it has different behavior:
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)
How to make distributed testing?