Hi All 

When we conduct a remote test with heavier loads always the controller is a bottleneck 
as it utilizes almost all times 100% CPU utilization. 

So as to bridge this gap, we modified two classes (ResultCollector.java and 
RemoteListenerWrapper.java) besides adding 3 properties in the 'jmeter.properties' 
file. 

The first property added in the 'jmeter.properties' file, decides when to send the 
sample results to the controller from the remote server. The value for this property 
should be one of the following three.

 1.Live: It is the existing behavior i.e. sending the sample result to the central 
controller, soon after receiving the sample result.

 2.Batch Mode: Sample Results will be transferred to the controller in a batch mode 
from the remote server. The size of the batch is configurable from the 
'jmeter.properties' file (2nd property added). So in this case, first the sample 
results are collected at the remote server until the number of sample results is equal 
to the specified batch size, and once the number reaches the specified batch size, the 
collected sample results will be transferred to the controller. 

 So as to further control the CPU utilization at the controller, we used one more 
property in the 'jmeter.properties' file (3rd property added), which specifies the 
delay between consecutive sample results transfer, while transferring the sample 
results to the controller. This helps a lot in tuning the CPU usage at the controller.

 3.End of the test: In this all the sample results are collected at the remote server 
until the end of the test. Once the test is stopped, the sample results collected at 
the remote server will be transferred to the controller.

Out of these three transfer modes, we found the 2nd type as most useful. We felt that 
it is behaving superb. 

We successfully conducted a load test using a load of 500 virtual users using the 
'Batch Mode'. In this test, JMeter controller was running on 1 machine, which was 
listening to 5 remote servers with 100 virtual users on each remote server. My test 
plan contains 5 http samplers within a single thread group. We conducted the test for 
a period of 1 hour. Controller never took 100% CPU utilization and it was always used 
less than 80% CPU.

The configuration of the controller machine used is Pentium 4, 1.8 GHZ, 512 MB ram.

Is there any one interested in helping us in testing this feature and sharing your 
views? If any one is interested to help us we will share the modifications, which we 
made to the source code.

Thanks
Applabs Team

Reply via email to