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]

Reply via email to