Open-source Java application for load testing and measuring the performance of web applications and other services.
elastic/rally
Macrobenchmarking framework for Elasticsearch that sets up clusters, runs benchmark races, and compares results.
- Stars
- 2,029
- Forks
- 350
- Open issues
- 132
- Last commit
- 19 hours ago
What is it?
Rally is a benchmarking framework for Elasticsearch. It handles the setup and teardown of an Elasticsearch cluster, manages benchmark data and test specifications across Elasticsearch versions, runs the benchmarks, and records the results.
Rally can attach telemetry devices during a run to help locate performance problems, and it produces summary reports on the command line. It also supports comparing performance results between runs. The project emphasizes reproducible benchmark data.
Rally runs on Linux and macOS, and it can benchmark Elasticsearch clusters running on Windows. Running a benchmark is a single command, such as esrally race with a chosen distribution version and track.
Key features
- 01Sets up and tears down Elasticsearch clusters for benchmarking.
- 02Manages benchmark data and specifications across Elasticsearch versions.
- 03Attaches telemetry devices to locate performance problems.
- 04Produces summary reports and compares results between runs.
Use cases
- Measuring indexing and query throughput of an Elasticsearch version upgrade.
- Comparing cluster performance under different configurations or hardware.
- Benchmarking an existing Elasticsearch cluster, including one on Windows.
- Investigating performance regressions during Elasticsearch development.
Quick start
- 1
Install Python 3.10+, pip3, git 1.9+ and a JDK, and set JAVA_HOME to that JDK
- 2
Install Rally with pip
pip3 install esrally - 3
Run your first race against Elasticsearch 6.0.0 with the geonames track
esrally race --distribution-version=6.0.0 --track=geonames
Things to know
- Rally itself must be installed on Unix machines; it is actively tested only on Linux and macOS.
- It is built specifically for benchmarking Elasticsearch clusters.
- Running races requires a suitable JDK installed and JAVA_HOME configured.
Topics
FAQ
- What is rally?
- Macrobenchmarking framework for Elasticsearch that sets up clusters, runs benchmark races, and compares results. Rally is a benchmarking framework for Elasticsearch. It handles the setup and teardown of an Elasticsearch cluster, manages benchmark data and test specifications across Elasticsearch versions, runs the benchmarks, and records the results.
- Is rally free to use? What license does it have?
- rally is open source under the Apache-2.0 license. Check the license terms before using it in commercial products.
- Is rally still maintained?
- Actively maintained. The last commit to rally was on Nov 6, 2026.
- What can I use rally for?
- Measuring indexing and query throughput of an Elasticsearch version upgrade. Comparing cluster performance under different configurations or hardware. Benchmarking an existing Elasticsearch cluster, including one on Windows. Investigating performance regressions during Elasticsearch development.
- How do I install rally?
- Install Python 3.10+, pip3, git 1.9+ and a JDK, and set JAVA_HOME to that JDK Install Rally with pip: pip3 install esrally Run your first race against Elasticsearch 6.0.0 with the geonames track: esrally race --distribution-version=6.0.0 --track=geonames
- Where can I get rally?
- The source code and installation instructions are on GitHub: https://github.com/elastic/rally
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A cross-platform command-line HTTP(S) benchmarking and load-testing tool written in Go, built on fasthttp for high request throughput.
A command-line tool for benchmarking and load testing gRPC services, with configurable concurrency, rate limits and output formats.
Open source load testing tool that lets you define HTTP and other protocol load tests as plain Python code, with a web UI.
A command-line tool and Go library for HTTP load testing that sends requests at a constant rate and reports latency statistics.
Open-source load testing tool where performance tests are written as JavaScript and run from a Go binary.