JMeter doesn’t actually install like a typical application; it’s a standalone Java application that runs directly from its extracted files.

Let’s get JMeter up and running. First, you’ll need Java. JMeter requires Java 8 or later. If you don’t have it, download and install it from Oracle or use a package manager like apt or brew.

# Check Java version
java -version

If you see a version number, you’re good to go. If not, you’ll need to install it.

Next, download the latest stable release of JMeter. Go to the official JMeter downloads page and grab the apache-jmeter-x.y.z.zip or .tgz file. For this example, let’s assume we downloaded apache-jmeter-5.5.zip.

Unzip or untar the downloaded file into a directory of your choice. I’ll use /opt/jmeter for this example.

# Navigate to your downloads directory
cd ~/Downloads

# Unzip JMeter into /opt/jmeter
sudo unzip apache-jmeter-5.5.zip -d /opt/

This creates a directory /opt/apache-jmeter-5.5. We can make it easier to access by creating a symbolic link.

# Create a symbolic link for easier access
sudo ln -s /opt/apache-jmeter-5.5 /opt/jmeter

Now, you can access JMeter scripts from /opt/jmeter/bin.

To launch JMeter’s GUI, execute the jmeter.sh (on Linux/macOS) or jmeter.bat (on Windows) script found in the bin directory.

# Navigate to the JMeter bin directory
cd /opt/jmeter/bin

# Launch JMeter GUI
./jmeter.sh

This will open the JMeter dashboard. From here, you can start building your load tests. To create a basic test plan, right-click on "Test Plan" in the left-hand pane, go to "Add," and select "Thread Group."

A Thread Group defines the users and their behavior. Let’s set up a simple one:

  • Number of Threads (users): 10
  • Ramp-up period (seconds): 5
  • Loop Count: Forever

This means 10 users will start within 5 seconds and then loop indefinitely.

Now, right-click on the "Thread Group," go to "Add," and select "Sampler." Choose "HTTP Request."

In the HTTP Request sampler:

  • Protocol: http (or https)
  • Server Name or IP: example.com
  • Method: GET
  • Path: /

This tells JMeter to send a GET request to the root path of example.com.

To see the results, right-click on "Thread Group," go to "Add," and select "Listener." Choose "View Results Tree." This listener shows every single request and its response, which is great for debugging.

Click the green "Start" button (the play icon) in the toolbar. You should see requests appearing in the "View Results Tree" listener. If you see green entries, your test is running successfully.

The most surprising thing about JMeter is that its primary mode of operation is often not the GUI. While the GUI is fantastic for building and debugging test plans, running large-scale load tests directly from the GUI is highly discouraged. The GUI consumes significant resources and can interfere with the accuracy of your test results.

Instead, you should run your tests in non-GUI mode from the command line. Save your test plan (e.g., my_test.jmx) and run it like this:

# Navigate back to the JMeter bin directory
cd /opt/jmeter/bin

# Run the test plan in non-GUI mode
./jmeter.sh -n -t /path/to/your/my_test.jmx -l /path/to/your/results.jtl

Here:

  • -n signifies non-GUI mode.
  • -t /path/to/your/my_test.jmx specifies the test plan file.
  • -l /path/to/your/results.jtl specifies the log file to save results.

The .jtl file is a plain text file (usually CSV by default) that can be easily analyzed later with JMeter’s listeners or external tools.

The jmeter.properties file, located in JMeter’s bin directory, is where you’ll fine-tune many aspects of JMeter’s behavior, from default sampler settings to thread pool sizes and reporting configurations. Most performance tuning involves adjusting values within this file, especially for distributed testing or high-throughput scenarios.

The next step is usually to configure listeners for aggregated results and explore distributed testing for scaling beyond a single machine.

Want structured learning?

Take the full Jmeter course →