Next Practical Step
Run a CLI pilot, capture average RT, size threads with the Thread Calculator, then compare achieved hits/s on the HTML dashboard.
Fix JMeter throughput stuck below target RPS: thread sizing, response time growth, listeners, think time, coordinated omission, and injector limits.
| Cause | What to check |
|---|---|
| Not enough threads for target RPS | Little’s Law style sizing: threads ≈ RPS × response time (seconds) when busy (Thread Calculator) |
| Response time grew under load | Server saturation; each thread completes fewer iterations |
| View Results Tree / heavy listeners | Injector CPU burned on UI I/O (best practices) |
| Think time / timers | By design lower RPS; expected for paced users |
| Assertions and scripting cost | Too many expensive checks/scripts per sample |
| Injector CPU, NIC, or heap pressure | One machine cannot generate the offered load |
| SUT throttling | Rate limits, pool exhaustion, 429/503 |
| Ramp still running | Steady-state not reached yet |
Official best practices: incorrect thread sizing contributes to coordinated omission and inaccurate results. Use CLI for real load: jmeter -n -t plan.jmx -l results.jtl.
-l only.| Resource | Use when |
|---|---|
| Thread Calculator | Initial concurrency |
| Coordinated Omission | Actual RPS below target |
| Best practices | Lean load generation |
| Socket closed / reset | Errors cap throughput |
No. After the server saturates, extra threads mostly increase queueing and response time, not useful throughput.
Calculators assume stable service time and little think time. Under load, service time rises and timers reduce rate.
No. Prefer healthy throughput with low error % and controlled percentiles (glossary).