This page describes the test environment and tool used to benchmark LindormTSDB performance, including cluster specifications, tool setup, and commands for write and query tests.
Prerequisites
Before you begin, ensure that you have:
-
A LindormTSDB cluster deployed on Alibaba Cloud
-
A stress testing client machine running in the same virtual private cloud (VPC) as your LindormTSDB cluster
Test environment requirements
| Requirement | Details |
|---|---|
| Operating system | Alibaba Cloud Linux 3.2104 64-bit |
| Network | Stress testing client and LindormTSDB cluster in the same VPC |
| Client instance type | ecs.c6e.26xlarge (32 cores, 128 GB memory or higher recommended) |
LindormTSDB cluster specifications
The following four 3-node LindormTSDB clusters are used in the benchmark tests. All clusters use the Standard storage type.
| Cluster | Nodes | Cores per node | Memory per node |
|---|---|---|---|
| Cluster 1 | 3 | 4 | 16 GB |
| Cluster 2 | 3 | 8 | 32 GB |
| Cluster 3 | 3 | 16 | 64 GB |
| Cluster 4 | 3 | 32 | 128 GB |
The preceding specifications are publicly available. Use the Performance storage type for better performance. The LindormTSDB version used is 3.4.9.
Test tool overview
The test tool is built on influxdb-comparisons, adapted for Lindorm. It uses the Devops data model, which simulates servers reporting system and application metrics at regular intervals. In this model, each server samples 101 measurements across 9 subsystems — CPU, memory, disk, disk I/O, kernel, network, Redis, PostgreSQL, and Nginx — at a 10-second interval and writes the values to LindormTSDB.
Download the test tool
Download the compressed test tool package, upload it to your stress testing client machine, and decompress it before running any tests.
The tool works similarly to influxdb-comparisons. For general usage guidance, see the influxdb-comparisons documentation.
How it works
To avoid data generation affecting benchmark results, the tool separates data generation from test execution:
-
Generate a data file or query file on disk.
-
Use the file as input to drive the write or query benchmark.
This two-step approach lets you reuse the same dataset across multiple test runs for reproducible results.
Run write tests
Step 1: Generate write data
Set the following parameters before running the command:
| Parameter | Description | Example |
|---|---|---|
${scale} |
Number of devices generating data | 100 |
${data_file} |
Output file name for the generated data | devops_data.bin |
${batchsize} |
Number of data points per batch | 5000 |
GOGC=500 ./bulk_data_gen -format lindormtsdbbatch -use-case devops -seed 100 \
-sampling-interval 10s -scale-var ${scale} -batchSize ${batchsize} > ${data_file}
Step 2: Write data to LindormTSDB
Set the following parameters before running the command:
| Parameter | Description | Example |
|---|---|---|
${data_file} |
Path to the file generated in Step 1 | devops_data.bin |
${add} |
LindormTSDB cluster endpoint in ip:port format |
ld-8vb458k154q7xxxx-proxy-tsdb.lindorm.rds.aliyuncs.com:8242 |
${workers} |
Number of concurrent write threads | 8 |
GOGC=500 ./bulk_load_lindormtsdb_batch -file ${data_file} -url ${add} \
-workers ${workers} -time-limit 10m
Run query tests
Step 1: Generate query statements
Set the following parameters before running the command:
| Parameter | Description | Example |
|---|---|---|
${query_type} |
Query type to benchmark (see Results of query tests for all supported types) | single-groupby-1-1-1 |
${scale} |
Number of devices to include in queries | 100 |
${queryfile} |
Output file name for the generated query statements | queries.bin |
GOGC=500 ./bulk_query_gen -seed 123 -queries 100000 -format lindormtsdb \
-use-case devops -query-type ${query_type} -scale-var ${scale} > ${queryfile}
Step 2: Run queries against LindormTSDB
Set the following parameters before running the command:
| Parameter | Description | Example |
|---|---|---|
${workers} |
Number of concurrent query threads | 8 |
${add} |
LindormTSDB cluster endpoint in ip:port format |
ld-8vb458k154q7xxxx-proxy-tsdb.lindorm.rds.aliyuncs.com:8242 |
${queryfile} |
Path to the file generated in Step 1 | queries.bin |
GOGC=500 ./query_benchmarker_lindormtsdb -workers ${workers} -url ${add} \
-file ${queryfile}