Current release: v2.3
The v2.3 runtime image includes Git 2.x for Elasticsearch Rally. Rally's official track repositories require Git 1.9 or newer, while the CentOS 7 base image only provides Git 1.8.3 by default.
QDBmark is a database and middleware benchmark platform. It provides a web UI for creating benchmark tasks, running connectivity checks, collecting Prometheus/container metrics, and exporting performance reports.
- Relational databases: MySQL, TiDB, SQL Server, Oracle, PostgreSQL, GaussDB, OpenGauss, DM, OceanBase, KingBase, Vastbase
- NoSQL and search: MongoDB, Redis, Elasticsearch, ClickHouse
- Messaging: Kafka, RocketMQ, RabbitMQ
- Storage/file benchmark: FIO
.
├── app.py # WSGI entrypoint
├── backend/ # Python backend and benchmark runners
│ └── db_benchmark/
│ ├── app.py # Flask routes and task orchestration APIs
│ ├── benchmark.py # Shared benchmark execution logic
│ ├── configs.py # Request/config normalization
│ ├── prosql.py # Prometheus and runtime metric helpers
│ ├── report.py # Report generation
│ └── databases/ # Per-engine runner modules
├── frontend/ # Templates and static UI assets
│ ├── static/
│ └── templates/
├── tools/ # Benchmark engines, tool source, and offline caches
├── docs/ # Architecture and maintenance documentation
├── Dockerfile # Container image build
├── docker-compose.yml # Local/container deployment
├── requirements.txt # Python dependencies
└── start-db-benchmark.sh # Direct docker-run helper
More details are in docs/DIRECTORY_STRUCTURE.md.
docker compose build
docker compose up -dDefault URL:
http://127.0.0.1:12365
Health check:
curl http://127.0.0.1:12365/healthEnd users should prefer the packaged release from GitHub Releases. The release archive includes:
start.shuninstall.shdocker-compose.yml- packaged
docker-compose - Docker image archive
- usage guide
For hosts whose Docker bridge subnet conflicts with the host network, set QDBMARK_DOCKER_SUBNET and QDBMARK_DOCKER_GATEWAY before running start.sh.
QDBmark uses a custom Docker bridge network by default to avoid conflicts with common host-side 172.x networks:
network: qdbmark_net
subnet: 10.245.0.0/24
gateway: 10.245.0.1
Override it when starting the package:
QDBMARK_DOCKER_NETWORK=qdbmark_net_2 \
QDBMARK_DOCKER_SUBNET=10.246.0.0/24 \
QDBMARK_DOCKER_GATEWAY=10.246.0.1 \
./start-db-benchmark.shThe same variables are supported by docker compose:
QDBMARK_DOCKER_SUBNET=10.246.0.0/24 \
QDBMARK_DOCKER_GATEWAY=10.246.0.1 \
docker compose up -d --buildThe application writes reports, uploaded files, task artifacts, and settings under data/. This directory is intentionally ignored by Git:
data/reports
data/uploads
data/artifacts
data/settings
Some benchmark tools are included as source directories or offline archives so the Docker build can run in restricted environments. Generated output directories, unpacked runtime directories containing generated certificates, historical result folders, and release image packages are excluded from the repository.
The DM BenchmarkSQL runtime archive is not committed to the public repository because the vendor archive may contain generated SSL key/certificate material. To build an image with DM BenchmarkSQL support from source, place your legally obtained archive at:
tools/benchmarksql-dm-cache/benchmarksql-dm-x86.tar
Then run docker compose build.
Do not commit customer data, generated reports, Prometheus settings, database passwords, SSH credentials, private keys, or package image exports. Example BenchmarkSQL property files use password=CHANGE_ME.
QDBmark source code is released under the Apache License 2.0. Third-party benchmark engines, database clients, and tools keep their own upstream licenses.