JMeter
|
This content was generated with the assistance of AI and should be verified against the official documentation before being relied on in production. |
The reference material consulted while preparing these pages is listed in the section bibliography.
A backend that passes its unit and integration tests can still fall over when two hundred people use it at once. Load testing answers a different question from functional testing: not "is the answer correct?" but "how fast, how often and for how many users at the same time?". Apache JMeter is the long-standing open source tool for it. It is a pure Java application that generates protocol-level traffic from many virtual users, records every response and reports on latency, throughput and errors. This section is a practical, example-driven guide to using it, from a first test to a continuous-integration job and a written analysis. Versions and dates are re-verified when each page is written and stated as of the date checked.
Running scenario: Bookshelf
Every page uses the same system under test so that readers can compare techniques: a local Bookshelf API started with Docker Compose. It exposes:
-
GET /api/books?query=andGET /api/books/{id}; -
POST /api/auth/login, which returns a JWT; -
POST /api/loansandGET /api/loans/{id}; -
a
/graphqlendpoint; -
a gRPC
bookshelf.v1.LoanServicewith the unary methodsCreateLoanandGetLoan, described bybookshelf.proto.
The section builds one test plan, bookshelf-load.jmx, step by step: a user journey (log in, search, view a book,
create a loan, view the loan) fed from users.csv and search-terms.csv, with the token correlated through a JSON
Extractor, plus assertions, think time and transactions. It then reuses the plan for the load profiles smoke, load,
stress, spike, soak and arrival-rate, and adds a companion bookshelf-grpc.jmx. The scenario is original and is not
copied from any tutorial or book. No example uses a real secret: credentials come from CSV files or -J properties
with placeholder values, and load is only ever aimed at localhost or at systems you own.
How to read this section
The pages follow the life of a load test. A reader who is new to JMeter should read them roughly in order; a reader who needs one answer can jump straight to the page that gives it.
The sections of the guide are:
-
Foundations: what JMeter is and is not, performance testing concepts, installation, the GUI, the test plan model and its execution order, and properties, variables and functions.
-
Load modelling: thread groups, ramp-up and duration, the open workload model and throughput control, timers and think time, logic controllers and transactions.
-
HTTP testing: requests, sessions and authentication, REST, JSON, GraphQL and SOAP, recording and cURL import, test data, correlation, assertions and Groovy scripting.
-
Other protocols, plugins and gRPC: JDBC, JMS, mail and TCP, other samplers, the Plugins Manager, custom thread groups and gRPC load testing.
-
Running tests and results: CLI mode, listeners and result files, the HTML dashboard, real-time monitoring and finding bottlenecks.
-
Scaling and automation: distributed testing, tuning, Maven, Docker and GitHub Actions, programmatic test plans, extending JMeter, troubleshooting, responsible load testing and what changed between versions.
-
A downloadable one-page cheat sheet.
Pages
Foundations
Load modelling: users, ramps and throughput
HTTP testing
Other protocols
Plugins and gRPC
Running tests and results
Scaling and automation
Operations and reference
Version baseline
Values checked on 2026-10-14 against the Apache JMeter download page and the project pages named below.
| Component | Version used in this section |
|---|---|
Apache JMeter |
5.6.3, the latest release (Java 8 or later, Java 17 or later recommended). JMeter 6.0 is not released; changes planned for it are described as planned, not as released behaviour. |
Java |
17 or later, 21 recommended |
JMeter Plugins Manager |
2.0, from jmeter-plugins.org (an independent community catalogue, not an Apache project) |
jmeter-maven-plugin |
3.8.x ( |
JMeter gRPC Request plugin |
2.0.x from the bakthava continuation; the original zalopay-oss repository is archived |
JMeter Java DSL |
2.3 (Abstracta, third party) |
What JMeter does not provide
The pages state these limits instead of inventing capabilities: core JMeter has no gRPC, WebSocket or HTTP/2 support (community plugins add them); JMeter is not a browser, so it does not run JavaScript or render pages (for front-end performance see the Playwright, Cypress and Selenium section, tracked in issue #258); there is no official Docker image and no official Gradle plugin; the Open Model Thread Group is experimental.
Books and the official documentation
Three books supply much of the methodology: Bayo Erinle, JMeter Cookbook (2014, JMeter 2.11); Bayo Erinle, Performance Testing with JMeter (2nd edition, 2015, JMeter 2.12); and Sai Matam and Jagdeep Jain, Pro Apache JMeter (2017, JMeter 3.0). They are good on concepts such as test types, workload modelling and bottleneck hunting, but they target old tooling: the WorkBench, the SOAP sampler and the Monitor Results listener no longer exist, and the BSF and BeanShell elements are deprecated or discouraged. The pages use the books for concepts and cite them by chapter, and take every element, menu path, property and command from the current official documentation.
References
Every source behind this section is listed, each with its link, in the Bibliography below.
Bibliography
Every source used to write this section, each linked to its official website. Links were checked on 2026-10-14. Each page lists the subset it used under its own References heading.
Apache JMeter
-
Apache JMeter home page, Download Apache JMeter, Changes (current release), Changes history and Security
-
Getting started and setup:
-
Test-plan tutorials:
-
Running tests and results:
-
Best Practices and Help! My boss wants me to load test our application!
-
Reference pages:
-
Hints and Tips, Glossary and Create a Test Plan from a cURL command
-
Step-by-step tutorials:
-
Apache JMeter source code, including
xdocs/changes.xmlon the master branch for the changes planned for 6.0
Plugins
-
JMeter Plugins, Plugins Manager, Plugins Manager from the command line and repository catalogue
-
Thread groups and load shaping:
-
JMeter gRPC Request plugin:
-
zalopay-oss/jmeter-grpc-request (original, archived)
-
bakthava/jmeter-grpc-request (continuation served by the Plugins Manager)
-
-
zalopay-oss/jmeter-grpc-plugin (alternative gRPC plugin)
-
BlazeMeter HTTP Plugin (
bzm-http2)
Ecosystem
-
jmeter-maven-plugin and its wiki
-
JMeter Java DSL and its user guide
-
InfluxDB documentation, Graphite documentation and Grafana documentation
-
APDEX: Apdex Alliance
Books (official publisher pages)
-
Bayo Erinle, JMeter Cookbook, Packt Publishing, 2014, ISBN 978-1-78398-828-0: publisher page
-
Bayo Erinle, Performance Testing with JMeter, Second Edition, Packt Publishing, 2015, ISBN 978-1-78439-481-3: publisher page
-
Sai Matam and Jagdeep Jain, Pro Apache JMeter: Web Application Performance Testing, Apress, 2017, ISBN 978-1-4842-2960-6: publisher page