One large machine or cluster of small machines for Jmeter load generator in load testing?

10/13/2017

I want to simulate up to 100,000 requests per second and I know that tools like Jmeter and Locust can run in distributed mode to generate load.

  1. But since there are cloud VMs with up to 64 vCPUs and 240GB of RAM on a single VM, is it necessary to run in a cluster of smaller machines, or can I just use 1 large VM?

  2. Will I be able to achieve more "concurrency" with more machines due to a network bottleneck coming from the 1 large machine?

  3. If I just use one big machine, would I be limited by the number of ports there are?

  4. In the load generator, does every simulated "user" that sends a request also require a port on the machine to receive a 200 response? (Sorry, my understanding of how TCP ports work is a bit weak.)

  5. Also, we use Kubernetes pretty heavily, but with Jmeter or Locust, I feel like it'd be easier to run it on bare VM, without containerizing (even in distributed mode) while still maintaining reproducibility. Should I be trying to containerize Jmeter or Locust and running in Kubernetes instead?

-- gunit
jmeter
kubernetes
load-testing
locust
port

1 Answer

10/16/2017

According to KISS principle it is better to go for a single machine assuming it is capable of conducting the required load.

  1. Make sure you're following JMeter Best Practices
  2. Make sure you have monitoring of baseline OS health metrics (CPU, RAM, swap, network and disk IO, JVM statistics, etc.)
  3. Start with low number of users and gradually increase the load until you reach the desired throughput or limit of any of the monitored metrics, whatever comes the first. If there will be a lack of CPU or RAM or something - see what could be done to overcome the limitation.

More information: What’s the Max Number of Users You Can Test on JMeter?

-- Dmitri T
Source: StackOverflow