JMeter Tutorial: How to use JMeter Timers

Timers are one of the simplest, yet most powerful tools in the arsenal of any JMeter user.  There are many types of timers available to meet the various scenarios you may be trying to simulate with JMeter.  In this tutorial, we will cover the main types of timers that are available on the market, and provide examples of when and how to use these timers to improve your testing.  Topics covered here:

  1. What is a JMeter Timer?
  2. Why user a JMeter Timer?
  3. Which JMeter TiImer should I use?
  4. How to use a JMeter Timer?

1. What is a JMeter Timer?

A JMeter Timer is a built in plugintool forto JMeter that can help with spacing out your samplersrequests.  Many testers call this gap in requests “think time,”, simulating the time that real users spend in between each step they perform in a real world scenario.  By default, each request in JMeter is made immediately after the another. With a JMeter timer, users can use a static or variable time to separate requests.  

2. Why use a JMeter Timer?

Timers will be useful in most of the JMeter scripts that you build, especially those that simulate real user activity.  Testing without a JMeter timer can provide inaccurate test results, because the simulated requests will come in a different pattern than what is seen in a real world situation.

For example you may be interested in ensuring every single user can execute a specific number of requests per second so that you can hit a target minute, hourly or daily transaction count.

In this case – we might want to test an API with 200 requests per second using 100 users. We would use a timer so that each user sends of a request every 500 milliseconds. This will achieve the 200 requests per second target as long as the response time is less than 500ms.For examply if

3. Which JMeter Timer Should I Use?

Built into JMeter, there are 9 different types of timers available:

Each timer has a different application, which we have outlined here:

Constant Timer:  The most basic timer, this will simply add a delay to the threads before they are initiated. The thread delay is a constant in milliseconds:

Uniform Random Timer:  One step above the basic timer, this will set a constant delay (base) for each thread, and then a randomly created delay will be added to that so each request has a unique timing associated to it:

Precise Throughput Timer: The Precise Throughput Timer and the Constant Throughput Timer both work in reverse of most of the other timers.  In these timers, the user sets the number of samples per throughput period (essentially a target # of requests per minute/second) and the timing of the threads is set to most closely match that.  

Constant Throughput Timer: The Constant Throughput Timer is like the Precise Throughput Timer, except that it has fewer settings.  Essentially, it sticks with a target throughput very closely, and doesn’t allow for the flexible variance of the Precise Throughput Timer:

Gaussian Random Timer:  The Gaussian Random Timer follows a normal or gaussian distribution and allocates the users to a delay based on a constant and standard deviation:

JSR223 Timer: The JSR223 Timer is the most flexible, but requires coding in a language like beanshell, javascript, or groovy to create your custom function.  Essentially, the JSR223 timer will run whatever code you script in that language:

Poisson Random Timer: The Poisson Random time is similar to the Gaussian random timer, but this time distributes users in accordance with the Poisson distribution:

Synchronizing Timer:  The Synchronizing Timer acts quite differently than the other timers on the list.  Essentially, it will wait until a certain number of threads have accumulated, and then group and release all of those threads at once:

Beanshell Timer:  The Beanshell Timer is similar to the JSR223 timer, however, is only supports scripts written in beanshell as a customer timer:

4. How to Use a JMeter Timer

To help you understand how to use a JMeter Timer, we have created a repository with an example script including a basic timer.  In this example we have added a Gaussian random timer that will be added before kicking off any recorded thread group.  

This is quite a basic example, there are much more complex ways to implement a JMeter Timer.  Like any other element in a test plan, a JMeter Timer has a scope which will determine which samplers are impacted by the timer.

Make sure that if a timer is meant to only be applied to a single sampler, that it is added as a child element of the sampler as shown, to restrict the scope to only that sampler:

It is also worth noting that Timers will always be executed before any sampler that is in scope.  Additionally, multiple timers will be run consecutively meaning all of the timers in scope will be executed before the sampler.

Conclusion: JMeter Timers are Simple, yet Powerful Tool

JMeter Timers are something that every load testing expert uses to create a realistic simulation of their scenario.  Knowing which timer to use and how to apply it will help you on the path to creating awesome load tests. For more information on getting started with JMeter, make sure to check out our getting started guide for JMeter.


Ready to get started?

Sign up or request a demo today.