Next Practical Step
Use the interactive Thread Calculator tool to calculate thread requirements before applying Constant or Precise Throughput Timers.
Master JMeter timers, think time, and pacing: Constant, Gaussian, Precise Throughput Timer, execution order, and calculating realistic TPS models.
In real-world traffic, human users and client applications do not hammer servers continuously with zero delay. Without timers, JMeter threads fire requests as fast as the network and CPU permit, creating unrealistic load spikes and artificial bottlenecks.
This guide explains Timer Execution Scoping, how to implement realistic Think Time, how to configure Throughput Pacing, and how to model target transactions-per-second (TPS) accurately.
Critical Rule: Timers Execute BEFORE Samplers
A common beginner mistake is assuming a timer delays after a request completes. In JMeter’s execution order:
Timers → PreProcessors → Sampler → PostProcessors → Assertions → Listeners
A timer attached to a sampler pauses the thread before that sampler is dispatched.
| Concept | Definition | Goal | Recommended Element |
|---|---|---|---|
| Think Time | The pause a human user spends reading, typing, or deciding between steps. | Simulate human delay and realistic concurrency. | Uniform Random Timer, Gaussian Random Timer, Flow Control Action |
| Pacing | Controlled delay added per iteration to ensure each virtual user maintains a fixed iteration rate. | Achieve consistent, predictable total TPS regardless of response time variations. | Constant Throughput Timer, Precise Throughput Timer, Flow Control Action (Groovy) |
Delivers a random delay uniformly distributed between a minimum and maximum offset.
Delay = Constant Delay Offset + (Random Number * Random Delay Maximum)Constant Delay Offset: 2000 (ms)Random Delay Maximum: 3000 (ms)Distributes delays along a bell curve (normal distribution) around a mean value, closely matching human behavioral variance.
Constant Delay Offset: 3000 ms (Mean / Average)Deviation: 1000 ms (Standard deviation)Instead of attaching timers to individual samplers, you can insert a standalone Flow Control Action sampler (formerly Test Action):
Pause\${__Random(1000,3000)} msWhen your performance test SLA requires maintaining a fixed throughput (e.g., exactly 500 Requests Per Minute or 100 TPS), use throughput timers.
Calculates delays to pace threads toward a global or per-thread target.
6000 for 100 RPS).this thread only: Each thread paces independently to hit the target rate.all active threads: Threads coordinate to collectively hit the total target rate.all active threads in current thread group: Scoped to the enclosing group.Introduced in JMeter modern releases, the Precise Throughput Timer (PTT) uses Poisson arrival processes to generate independent, realistic arrival rates that avoid artificial lockstep synchronization.
50 (samples per second)600 (seconds)To enforce exact end-to-end iteration pacing (e.g., “Each virtual user iteration must take exactly 10 seconds regardless of how long API calls took”):
// Record iteration start timevars.putObject("iterationStartTime", System.currentTimeMillis())long targetIterationDurationMs = 10000 // 10 seconds pacinglong startTime = (Long) vars.getObject("iterationStartTime")long elapsedTime = System.currentTimeMillis() - startTimelong sleepTime = targetIterationDurationMs - elapsedTime
if (sleepTime > 0) { return sleepTime} else { log.warn("Iteration overrun by {} ms! Target was {} ms.", Math.abs(sleepTime), targetIterationDurationMs) return 0}Threads = Target RPS * (Response Time in seconds + Think Time in seconds)