Apache JMeter is an open source Java software program (currently released under the Apache License, version 2.0) for performance and scalability load testing. It is a free tool with GUI and command-line support for Windows, Linux and MacOSX with many enterprise-level features.
Apache JMeter may be used to test the performance and scalability of both on static and dynamic resources like ArcGIS services as well as web applications within an ArcGIS Enterprise Site.
It can exercise many different applications and protocols, for example:
It provides a full featured IDE for constructing and debugging a test as well as the recording of workflow traffic (from web browsers) directly into a project. This Article refers to the IDE as "the GUI".
At the end of a test, an HTML report can be created automatically to assist with the analysis of the results.
JMeter works at the protocol level (e.g. HTTPS) and does not try to mimic a web browser. As such, it does not execute any JavaScript logic found in web applications nor does it attempt to render the HTML pages like a browser.
Being able to verify system performance, scalability and/or stability are critical for the successful adoption of any GIS deployment. Having a modern testing tool to help quantify the ArcGIS capabilities can optimize the investment in and use of the deployment.
By using a free or open source application to the conduct tests, the analyst can work with the users to avoid the distraction of cost while just focusing on the tests and their results.
Single user performance profiling and troubleshooting of an ArcGIS service covers most testing cases. JMeter can become a great compliment to the other tools in the GIS testing "tool chest":
Single user performance testing and analysis is typically a first step before applying load as it can help identify if a resource is suitable for the heavier testing. In other words, if something is “slow” with one user, it will be slow(er) with 20 users so, there is little value in moving to the load test until performance is improved through tuning.
Scalability testing typically conducted when necessary to understand performance under load (e.g. the simulation of multiple users).
However, load testing:
That said, having a broad community of support for a tool like proven tool like JMeter can help lessen this complexity:
Download the latest from the Apache JMeter site; January 2024 -– version 5.6.3
Note: JMeter should be installed on a dedicated test client machine (not on your ArcGIS Enterprise servers)
Once downloaded, unzip the package to a local directory
For more information and options, see the JMeter Getting Started resource, Installation section: https://jmeter.apache.org/usermanual/get-started.html
Apache JMeter is available for Windows, Linux and MacOSX environments. Our screenshots and examples are based on running JMeter (v5.3) from a Windows environment but also apply to v5.4.x -- v5.6.x setups.
A Java development kit (or runtime) is required to run Apache JMeter, and either the OpenJDK or Oracle JDK will accomplish this task.
Note: Neither Apache JMeter nor the OpenJDK have an actual “installer”. They are both just compressed downloads. In some ways, this makes their deployment easier.
Note: It is recommended to always run the latest version of JMeter. If you are also updating your JDK release, check that it is supported by the JMeter version you are using. From Apache JMeter: "JMeter 5.6.x requires Java 8 or later for execution (Java 17 or later recommended)."
Once the Java is downloaded (e.g. the OpenJDK), unzip the package to a local directory. For example:
or
In either case, the Java included bin folder exists the directory listed above (along with several other folders like conf, include, jmods, lib, etc…).
Add the environment variable JAVA_HOME to your system that points to this path:
Add the “JAVA_HOME bin” path to your system’s PATH environment variable:
The JMeter Plugins Manager is a free component and highly recommended for adding functionality that is not included with the base tool. Our test examples will make use of technology that is added via the Plugins Manager.
Download the JAR file, put it into JMeter’s lib/ext directory then (re)start JMeter.
To start the JMeter GUI mode, run the appropriate “jmeter” script file for your environment:
The GUI is a handy interface for constructing and verifying your test is working as expected
The JMeter GUI Article screenshots are based on the Metal theme found under Options-->Look and Feel-->Metal (the default theme is “Darklaf – Darcula”)
Note: Apache JMeter advises to not run a load test from the GUI. The GUI should only be used to build and debug the test.
Steps for running the test from the command line are covered in another Load Testing Article.
Before testing dynamic ArcGIS services, its best to become familiar with some of the inter-workings and behaviors of JMeter by building and validating the execution of a simple test with a single static request.
Subsequent tutorials will cover how to build more complex tests that exercise a dynamic ArcGIS service.
Note: Sending only one request helps prevent the "load testing" of the jmeter.apache.org site, which should be avoided.
To download the Apache JMeter Test Plan used in this Article see: simpletest1.zip
For information on how to build an Apache JMeter Test Plan to “dynamically” call the SampleWorldCities ArcGIS service through the export map function, see: Creating a Load Test in Apache JMeter against the SampleWorldCites Map Service (Beginner/Intermediat.... To download the (updated) accompanying JMeter Test Plan, see: sampleworldcities2B.zip.
For a set of additional testing tutorials (of increasing complexity), see: Performance Engineering: Load Testing ArcGIS Enterprise
Apache JMeter released under the Apache License 2.0. Apache, Apache JMeter, JMeter, the Apache feather, and the Apache JMeter logo are trademarks of the Apache Software Foundation. Oracle®, Java, and MySQL are registered trademarks of Oracle and/or its affiliates.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.