Skip to content

阿里云三节点集群性能异常,在本地PVE集群下性能正常 #17853

@carfieldboy

Description

@carfieldboy

您好,
以下是我们在阿里云上部署后压测遇到的问题,请帮忙分析下可能的问题。

IoTDB 3节点集群压测性能异常问题报告

一、问题概述

在阿里云 ECS 环境部署 Apache IoTDB 2.0.8 三节点集群,使用 iot-benchmark 进行写入压测时,出现写入延迟极高(7-8秒)且频繁超时的现象。同一套软件和部署脚本,在阿里云单节点模式下运行正常;在本地 PVE 虚拟化三节点集群下运行也正常。


二、部署信息

2.1 IoTDB 版本及下载地址

项目 内容
软件 Apache IoTDB
版本 2.0.8
下载地址 https://www.apache.org/dyn/closer.cgi/iotdb/2.0.8/apache-iotdb-2.0.8-all-bin.zip
集群部署文档 https://iotdb.apache.org/zh/UserGuide/latest/Deployment-and-Maintenance/Cluster-Deployment_apache.html
部署架构 3 ConfigNode + 3 DataNode

2.2 压测工具

项目 内容
工具 iot-benchmark
下载地址 https://github.com/thulab/iot-benchmark/releases/download/2026-06-03-1f0f5e2f-java8/iot-benchmark-iotdb-2.0-java8.zip

2.3 环境信息

项目 阿里云环境 本地 PVE 环境
实例规格 ecs.u1-c1m2.xlarge(4核8G) 4核8G
操作系统 CentOS 7.9 CentOS 7.9
部署方式 Ansible 部署脚本 相同 Ansible 部署脚本
IoTDB 版本 2.0.8 (build b88b5dc) 2.0.8 (build b88b5dc)
部署架构 3 ConfigNode + 3 DataNode 3 ConfigNode + 3 DataNode
网络部署 第一阶段:跨三个可用区;第二阶段:同一可用区 同一虚拟化平台内
节点间延迟 跨可用区约 1.0-1.5ms;同可用区约 0.2ms 约 0.2ms
存储类型 云盘 本地虚拟磁盘
副本策略 DataRegion=3,SchemaRegion=3 DataRegion=3,SchemaRegion=3

三、压测配置

########### Test Mode ###########
BENCHMARK_WORK_MODE=testWithDefaultPath
########### Database Connection Information ###########
DB_SWITCH=IoTDB-200-SESSION_BY_TABLET
HOST=ip地址
PORT=6667
USERNAME=xxxx
PASSWORD=xxxx
DB_NAME=test
########### Data Mode ###########
GROUP_NUMBER=2
DEVICE_NUMBER=1000
REAL_INSERT_RATE=1.0
SENSOR_NUMBER=100
IS_SENSOR_TS_ALIGNMENT=true
IS_OUT_OF_ORDER=false
OUT_OF_ORDER_RATIO=0.5
########### Data Amount ###########
OPERATION_PROPORTION=1:0:0:0:0:0:0:0:0:0:0:0:0
SCHEMA_CLIENT_NUMBER=4
DATA_CLIENT_NUMBER=2
LOOP=10
BATCH_SIZE_PER_WRITE=10000
START_TIME=2026-06-04T00:00:00+08:00
POINT_STEP=1000
OP_MIN_INTERVAL=0
INSERT_DATATYPE_PROPORTION=1:1:1:1:1:1:0:0:0:0:0
COMPRESSOR=SNAPPY
########### Other Param ###########
IS_DELETE_DATA=true
CREATE_SCHEMA=true
BENCHMARK_CLUSTER=false
#################### 结果输出配置 ####################
CSV_OUTPUT=true
TEST_DATA_PERSISTENCE=CSV
USE_MEASUREMENT=true
RESULT_PRECISION=0.1
IS_QUIET_MODE=false
LOG_PRINT_INTERVAL=10
RESULT_PRINT_INTERVAL=0
#################### 超时配置 ####################
READ_OPERATION_TIMEOUT_MS=300000

四、各环境测试现象与日志

4.1 阿里云环境(跨三个可用区部署)

在阿里云 ECS 上部署 3 节点 IoTDB 集群,节点分布在三个可用区,节点间 ping 延迟约 1.0-1.5ms。使用上述配置执行压测,出现以下现象:

  • 客户端持续显示 0.00% workload is done
  • 首批写入延迟约 1025ms
  • 后续写入延迟暴涨至 7000-8000ms
  • 频繁抛出 java.util.concurrent.TimeoutException
  • 云监控中 CPU、I/O 等未显示明显性能告警

压测日志节选:

2026-06-05 15:11:46,477 ERROR cn.edu.tsinghua.iot.benchmark.iotdb200.DMLStrategy.SessionStrategy:465 - insertion failed
java.util.concurrent.TimeoutException: null
        at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:204)
        at cn.edu.tsinghua.iot.benchmark.iotdb200.DMLStrategy.SessionStrategy.waitWriteTaskToFinishAndGetStatus(SessionStrategy.java:462)
        at cn.edu.tsinghua.iot.benchmark.iotdb200.DMLStrategy.SessionStrategy.insertOneBatchByTablet(SessionStrategy.java:117)
        at cn.edu.tsinghua.iot.benchmark.iotdb200.DMLStrategy.SessionStrategy.insertOneBatch(SessionStrategy.java:96)
        at cn.edu.tsinghua.iot.benchmark.iotdb200.IoTDB.insertOneBatch(IoTDB.java:216)
        at cn.edu.tsinghua.iot.benchmark.tsdb.IDatabase.insertOneBatchWithCheck(IDatabase.java:81)
        at cn.edu.tsinghua.iot.benchmark.tsdb.DBWrapper.insertOneBatch(DBWrapper.java:106)
        at cn.edu.tsinghua.iot.benchmark.tsdb.IDatabase.insertOneBatchWithCheck(IDatabase.java:81)
        at cn.edu.tsinghua.iot.benchmark.client.generate.GenerateDataMixClient.ingestionOperation(GenerateDataMixClient.java:163)
        at cn.edu.tsinghua.iot.benchmark.client.generate.GenerateDataMixClient.doTest(GenerateDataMixClient.java:56)
        at cn.edu.tsinghua.iot.benchmark.client.DataClient.run(DataClient.java:129)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at java.base/java.lang.Thread.run(Thread.java:840)
2026-06-05 15:11:46,479 ERROR cn.edu.tsinghua.iot.benchmark.tsdb.DBWrapper:154 - Insert batch failed because
java.util.concurrent.TimeoutException: null
...
2026-06-05 15:13:54,956 INFO  cn.edu.tsinghua.iot.benchmark.tsdb.DBWrapper:136 - DataClientService-thread-2 insert one batch latency (device: d_3, sg: g_1) ,8448.54, ms, throughput ,118363.65436089458, points/s
2026-06-05 15:13:55,238 INFO  cn.edu.tsinghua.iot.benchmark.tsdb.DBWrapper:136 - DataClientService-thread-1 insert one batch latency (device: d_4, sg: g_0) ,7843.15, ms, throughput ,127499.86983474539, points/s

4.2 阿里云单节点验证

为验证 IoTDB 软件本身和压测配置是否有问题,在阿里云其中一台服务器上部署了单节点 IoTDB(相同版本、相同压测配置)。

现象:

  • 写入延迟为毫秒级
  • 单批吞吐数百万~千万级 points/s
  • 无超时异常

4.3 本地 PVE 环境验证

为进行对比验证,在本地 PVE 虚拟化平台使用完全相同的 Ansible 部署脚本、完全相同的 IoTDB 2.0.8 版本和完全相同的压测配置搭建了 3 节点集群。节点间延迟约 0.2ms。

现象:

  • Schema 注册成功
  • 首批写入延迟约 666ms / 684ms
  • 后续正常写入延迟约 90-200ms
  • 单批吞吐数百万~千万级 points/s
  • 无超时异常
  • 压测进度正常推进

压测日志节选:

2026-06-05 15:48:19,212 INFO  cn.edu.tsinghua.iot.benchmark.mode.BaseMode:244 - Registering schema successful!
2026-06-05 15:48:19,212 INFO  cn.edu.tsinghua.iot.benchmark.schema.MetaDataSchema:66 - SCHEMA_CLIENT_DATA_SCHEMA has been cleared!
2026-06-05 15:48:19,216 INFO  cn.edu.tsinghua.iot.benchmark.workload.GenerateDataWorkLoad:145 - Start Generating WorkLoad
2026-06-05 15:48:19,248 INFO  cn.edu.tsinghua.iot.benchmark.workload.GenerateDataWorkLoad:201 - Finish 0.0 % WorkLoad Buffer
2026-06-05 15:48:19,257 INFO  cn.edu.tsinghua.iot.benchmark.workload.GenerateDataWorkLoad:208 - Finish Generating WorkLoad
2026-06-05 15:48:20,144 INFO  cn.edu.tsinghua.iot.benchmark.tsdb.DBWrapper:136 - DataClientService-thread-1 insert one batch latency (device: d_0, sg: g_0) ,648.96, ms, throughput ,1540919.2833827285, points/s
2026-06-05 15:48:20,534 INFO  cn.edu.tsinghua.iot.benchmark.tsdb.DBWrapper:136 - DataClientService-thread-1 insert one batch latency (device: d_2, sg: g_0) ,374.12, ms, throughput ,2672941.7859767866, points/s
2026-06-05 15:48:20,640 INFO  cn.edu.tsinghua.iot.benchmark.tsdb.DBWrapper:136 - DataClientService-thread-1 insert one batch latency (device: d_4, sg: g_0) ,100.63, ms, throughput ,9937717.344089389, points/s
2026-06-05 15:48:20,792 INFO  cn.edu.tsinghua.iot.benchmark.tsdb.DBWrapper:136 - DataClientService-thread-1 insert one batch latency (device: d_6, sg: g_0) ,145.31, ms, throughput ,6882045.795472618, points/s
2026-06-05 15:48:20,898 INFO  cn.edu.tsinghua.iot.benchmark.tsdb.DBWrapper:136 - DataClientService-thread-1 insert one batch latency (device: d_8, sg: g_0) ,99.55, ms, throughput ,1.0044732407725973E7, points/s
2026-06-05 15:48:21,040 INFO  cn.edu.tsinghua.iot.benchmark.tsdb.DBWrapper:136 - DataClientService-thread-1 insert one batch latency (device: d_10, sg: g_0) ,136.75, ms, throughput ,7312487.420693514, points/s

4.4 阿里云环境(同一可用区部署)

在本地 PVE 环境验证正常后,怀疑阿里云跨可用区的网络延迟可能是影响因素。因此将阿里云三个 ECS 实例调整到同一可用区,节点间 ping 延迟降至约 0.2ms。使用相同的 Ansible 部署脚本重新部署 IoTDB 集群,并运行相同压测。

现象:

  • 问题与跨可用区部署时一致
  • 首批写入延迟约 1025ms
  • 后续写入延迟仍暴涨至 7000-8000ms
  • 仍频繁出现 TimeoutException
  • 压测进度持续 0.00% workload is done

五、对照结果汇总

实验环境 节点数 网络延迟 首批写入延迟 正常写入延迟 超时情况 压测进度
阿里云(跨可用区) 3 节点集群 1.0-1.5ms 约 1025ms 7000-8000ms 频繁 0.00%
阿里云(同可用区) 3 节点集群 约 0.2ms 约 1025ms 7000-8000ms 频繁 0.00%
阿里云(单节点) 1 节点 毫秒级 毫秒级 正常
本地 PVE 3 节点集群 约 0.2ms 约 650ms 90-200ms 正常

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions