您好,
以下是我们在阿里云上部署后压测遇到的问题,请帮忙分析下可能的问题。
IoTDB 3节点集群压测性能异常问题报告
一、问题概述
在阿里云 ECS 环境部署 Apache IoTDB 2.0.8 三节点集群,使用 iot-benchmark 进行写入压测时,出现写入延迟极高(7-8秒)且频繁超时的现象。同一套软件和部署脚本,在阿里云单节点模式下运行正常;在本地 PVE 虚拟化三节点集群下运行也正常。
二、部署信息
2.1 IoTDB 版本及下载地址
2.2 压测工具
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 |
无 |
正常 |
您好,
以下是我们在阿里云上部署后压测遇到的问题,请帮忙分析下可能的问题。
IoTDB 3节点集群压测性能异常问题报告
一、问题概述
在阿里云 ECS 环境部署 Apache IoTDB 2.0.8 三节点集群,使用 iot-benchmark 进行写入压测时,出现写入延迟极高(7-8秒)且频繁超时的现象。同一套软件和部署脚本,在阿里云单节点模式下运行正常;在本地 PVE 虚拟化三节点集群下运行也正常。
二、部署信息
2.1 IoTDB 版本及下载地址
2.2 压测工具
2.3 环境信息
三、压测配置
四、各环境测试现象与日志
4.1 阿里云环境(跨三个可用区部署)
在阿里云 ECS 上部署 3 节点 IoTDB 集群,节点分布在三个可用区,节点间 ping 延迟约 1.0-1.5ms。使用上述配置执行压测,出现以下现象:
0.00% workload is donejava.util.concurrent.TimeoutException压测日志节选:
4.2 阿里云单节点验证
为验证 IoTDB 软件本身和压测配置是否有问题,在阿里云其中一台服务器上部署了单节点 IoTDB(相同版本、相同压测配置)。
现象:
4.3 本地 PVE 环境验证
为进行对比验证,在本地 PVE 虚拟化平台使用完全相同的 Ansible 部署脚本、完全相同的 IoTDB 2.0.8 版本和完全相同的压测配置搭建了 3 节点集群。节点间延迟约 0.2ms。
现象:
压测日志节选:
4.4 阿里云环境(同一可用区部署)
在本地 PVE 环境验证正常后,怀疑阿里云跨可用区的网络延迟可能是影响因素。因此将阿里云三个 ECS 实例调整到同一可用区,节点间 ping 延迟降至约 0.2ms。使用相同的 Ansible 部署脚本重新部署 IoTDB 集群,并运行相同压测。
现象:
TimeoutException0.00% workload is done五、对照结果汇总