Next Practical Step
Check the Thread Group scheduler duration and set the sampler error action to Continue, then re-run with one thread to see which sample, if any, was failing.
Fix JMeter tests that stop early: scheduler duration, sampler error actions like Stop Test, loop controllers, and JVM crashes, diagnosed step by step.
A test ends well before its intended duration or loop count:
The CLI summary prints far fewer samples than expected, and the run exits.jmeter.log may contain lines such as:
INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of testand the results file simply stops at some timestamp.
JMeter ends a test for a small number of reasons: a configured duration expired, a sampler or assertion failure triggered a stop action, a controller finished the flow, or the JVM crashed. Check the Thread Group scheduler and the “Action to be taken after a Sampler error” setting first, then look for the failing sample.
| Cause | Where to look | Why it happens |
|---|---|---|
| Scheduler duration set | Thread Group, Specify Thread lifetime | Duration (seconds) ends the test after that many seconds, regardless of loops |
| Sampler error action is Stop Test | Thread Group bottom panel | The first failed sample or failed assertion ends the whole run |
| Assertion failures count as errors | Any assertion in scope | A failing Response Assertion marks the sample failed, which feeds the stop action |
| Loop or While Controller condition | Controller logic | The condition evaluates false and the flow exits sooner than expected |
| JVM crash | OS logs, no clean shutdown | Out of memory or a killed process ends the run without JMeter’s own log lines |
| Manual or remote stop | Run menu, remote engines | Someone stopped the test, or a remote engine disconnected |
Open the Thread Group and look at the Specify Thread lifetime checkbox:
The Thread Group’s Action to be taken after a Sampler error decides what a failed sample does. The five options:
Continue - ignore the error and continue with the testStart next thread loop - skip the rest of the current iteration and restart the loopStop Thread - the current thread exitsStop Test - the entire test stops at the end of any current samplesStop Test Now - the entire test stops abruptly, interrupting current samplersDuring debugging and in most load tests, use Continue. Reserve Stop Test for smoke tests where a failure invalidates the whole run.
With Continue in place, re-run with one thread in the GUI with a View Results Tree listener, or inspect the results of the failed run:
If jmeter.log has no clean end-of-test lines and the process simply vanished:
dmesg on Linux, Event Viewer on Windows) for an OOM kill.A Loop Controller with a lower count than expected, a While Controller whose condition flips early, or a Throughput Controller percentage can all end a thread’s work before the Thread Group’s own loop count finishes. Trace the flow with one thread and confirm each controller executes as often as intended.
| Resource | Use when |
|---|---|
| OutOfMemoryError heap | The run died from memory pressure |
| Freezing, CPU & CLI Hangs | The run hangs instead of stopping cleanly |
| Thread Calculator | Recomputing realistic durations and concurrency |
| Building a Test Plan | Thread Group scheduler fundamentals |
Usually the Thread Group scheduler: Specify Thread lifetime is checked with a short Duration (seconds). The other common cause is a sampler error action set to Stop Test combined with an early failing sample.
Check jmeter.log for end-of-test messages, then the results file for the last samples. A clean stop shows listener notifications; a crash leaves no end-of-test lines at all, which points to the JVM dying.
Usually not. Load tests expect some failures under pressure, and Continue keeps the measurement going. Use Stop Test only for smoke tests where any failure makes the rest of the run meaningless.
Yes. A failed assertion marks its sample as failed, and the Thread Group’s sampler error action then applies to it exactly like a transport error. Fix the assertion or change the action to Continue.