System:
I have the following JMeter setup for distributed, non-GUI testing: 1 Master VM, 2 Slaves. All 3 are Azure VMs: Ubuntu 16.04, 4 vcpus, 16GB RAM
I have followed this JMeter tuning guide and am not seeing improved results: https://www.blazemeter.com/blog/9-easy-solutions-jmeter-load-test-%E2%80%9Cout-memory%E2%80%9D-failure
I have also tuned all 3 systems according to the EMQ tuning guide: http://emqtt.io/docs/v2/tune.html
Problem: I am still unable to achieve 50,000 connections over 5000s (1h23m) with 2 Slave VMs.
According to the JMeter documentation, I can run 1000 threads in x amount of time per VM:
25.5 Limitations, 3. A single JMeter client running on a 2-3 GHz CPU (recent CPU) can handle 1000-2000 threads depending on the type of test.
https://jmeter.apache.org/usermanual/jmeter_distributed_testing_step_by_step.html
I am able to verify this in practice. I am also able to verify that I can achieve a maximum of 12,000 threads over 600s. (12,500 threads over any time results in JVM OOM Exception)
Since the target servers are VMs running EMQ instances, I will note that the official EMQ load test docs describe the test agent as being 1 VM 30000 VU (2 dockers*15000 VU. (http://emq-xmeter-benchmark-en.readthedocs.io/en/latest/connection.html#ssl-authentication)
Question: I am wondering if there is a known implementation of JMeter (+ Virtual Machines + VirtualBox or Docker or some other service) that allows for more threads. Or, if there is a known optimization for JMeter that I have not addressed?