Plan JMeter distributed testing ports, firewall rules, user.properties, and Docker setups for AWS, Azure, GCP, and Kubernetes clusters.
Controller user.properties & Command
Worker Daemon Commands
Inbound Security Group / Firewall Rules
| Direction | Source | Destination | Protocol | Port | Purpose |
|---|
Environment Setup Commands
Connectivity Diagnostic Commands (Netcat / PowerShell)
Docker Compose Cluster Manifest
All calculations run client-side. IP addresses are not stored or sent to any server. See Remote Testing Manual and RMI Troubleshooting Guide.
How JMeter Distributed Testing Works
Section titled “How JMeter Distributed Testing Works”When you launch a distributed load test from a Controller (Master) against remote Workers (Injectors), JMeter uses Java RMI (Remote Method Invocation) for two-way coordination:
- RMI Registry (
server_port, default 1099): The controller connects to port 1099 on each worker node to look up the remote engine service. - Worker Engine Execution (
server.rmi.localport, e.g. 50000): The controller sends the compiled test plan, parameters, and startup signals to the worker’s dedicated engine port. - Return Sample Callback (
client.rmi.localport, e.g. 60000): As workers generate load, they stream sample results and metrics back to the controller over this return port.
Why Default Setups Fail in the Cloud
Section titled “Why Default Setups Fail in the Cloud”By default, Java RMI uses dynamic ephemeral ports (0) for engine communication and callback channels. In cloud environments (AWS Security Groups, Azure NSGs, GCP Firewalls, Docker, or Kubernetes), firewalls silently drop return packets, causing tests to freeze indefinitely at initialization.
By pinning all three ports (server_port, server.rmi.localport, and client.rmi.localport), you can write strict, deterministic firewall rules without opening wide port ranges.
Step-by-Step Distributed Setup Guide
Section titled “Step-by-Step Distributed Setup Guide”1. Configure Controller (Master) Node
Section titled “1. Configure Controller (Master) Node”Place these properties in bin/user.properties on your controller machine:
remote_hosts=10.0.1.10:1099,10.0.1.11:1099,10.0.1.12:1099client.rmi.localport=60000mode=StrippedBatchserver.rmi.ssl.disable=falsejava.rmi.server.hostname=10.0.0.5Launch the distributed run in CLI mode:
jmeter -n -t test.jmx -R 10.0.1.10,10.0.1.11,10.0.1.12 -l results.jtl -e -o ./report2. Configure Worker (Server) Nodes
Section titled “2. Configure Worker (Server) Nodes”On each worker node, configure bin/user.properties:
server_port=1099server.rmi.localport=50000server.rmi.ssl.disable=falseStart the daemon specifying its routable network IP address:
./bin/jmeter-server -Djava.rmi.server.hostname=10.0.1.103. Verify Network Reachability Before Running Tests
Section titled “3. Verify Network Reachability Before Running Tests”Always test bidirectional TCP connectivity with nc (Netcat) or Test-NetConnection (PowerShell) before starting tests:
# Test from Controller to Workernc -zv 10.0.1.10 1099nc -zv 10.0.1.10 50000
# Test from Worker to Controllernc -zv 10.0.0.5 60000