Staging environment and tools

更新时间:
复制 MD 格式

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:

  1. Generate a data file or query file on disk.

  2. 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}

What's next