How to configure a Constant Throughput Timer in JMeter

A fast JMeter thread group can send requests as soon as each sampler finishes, which can push a service above the planned request rate. A Constant Throughput Timer adds delays before affected samplers so the workload aims for a chosen sample rate instead of running at full speed.

The timer target is entered in samples per minute. Its calculation mode decides whether that target applies to one thread, all active threads, or only the active threads in the current Thread Group. For a single thread group that should produce one aggregate request rate, the shared current-thread-group mode keeps the setting as one group-level rate instead of a per-thread rate.

The timer can slow sampler starts, but it cannot create more capacity than the thread count and response times allow. If responses take too long or too few threads are active, the observed rate can stay below the target even when the timer is configured correctly.

Steps to configure a JMeter Constant Throughput Timer:

  1. Open the test plan in the JMeter GUI and select the Thread Group that owns the samplers to pace.
  2. Add the timer from Thread GroupAddTimerConstant Throughput Timer.
  3. Name the timer for the traffic it controls.
  4. Enter the aggregate rate in Target throughput.
    Target throughput: 120.0

    JMeter reads this field as samples per minute. A target of 120.0 means about two samples per second for the timer's selected scope.

  5. Set Calculate Throughput based on to all active threads in current thread group (shared).

    Use this mode when the selected Thread Group should share one total rate. Per-thread modes multiply the effective rate as more threads become active.

  6. Keep the timer under the controller or Thread Group scope that contains only the samplers to pace.

    A timer applies to affected samplers in its scope. Move login, setup, or cleanup samplers outside that scope when they should not count against the paced request rate.

  7. Save the test plan.
  8. Run the saved plan in non-GUI mode with a fresh result file.
    $ jmeter -n -t constant-throughput-timer-demo.jmx -l constant-throughput-results.jtl -j jmeter.log
    Creating summariser <summary>
    Created the tree successfully using constant-throughput-timer-demo.jmx
    Starting standalone test @ 2026 Jun 29 22:03:36 GMT
    summary =     12 in 00:00:06 =    2.2/s Avg:    22 Min:     0 Max:   271 Err:     0 (0.00%)
    Tidying up ...
    ... end of run
  9. Compare the summary rate with the target rate.
    Target:   120 samples/minute, about 2.0 samples/second
    Observed: summary = 12 in 00:00:06 = 2.2/s, Err: 0 (0.00%)

    A small short-run difference is expected because startup, ramp-up, and sample timing are not perfectly even. If the rate stays far below target, raise the Thread Group user count or reduce sampler response time before increasing the timer target.