carfieldboy opened a new issue, #17853: URL: https://github.com/apache/iotdb/issues/17853
您好, 以下是我们在阿里云上部署后压测遇到的问题,请帮忙分析下可能的问题。 # 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 | --- ## 三、压测配置 ```properties ########### 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 | 无 | 正常 | -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
