GitHub user exciak created a discussion: 【问题求助】Windows 单机集群 IoTDB 2.0.6 
系统熄屏休眠唤醒后触发 Netty Selector 空轮询,重建失效导致 DataNode CPU 持续 100%

环境信息
IoTDB 版本:2.0.6(单机集群,1 ConfigNode + 1 DataNode)
操作系统:Windows 11
JDK 版本:OpenJDK 11
部署模式:本地单机集群,全部服务运行在同一台 Windows 机器
客户端:SpringBoot SessionPool 写入持续运行;故障触发时使用 DBeaver 执行查询
现象描述数据库持续稳定写入数据数天,电脑长时间熄屏待机。开机后打开 DBeaver 连接 IoTDB 执行查询,一段时间后 DataNode 进程 CPU 
直接 100% 持续占满,永不自动恢复,只能重启进程解决。
<img width="1896" height="1000" alt="Snipaste_2026-08-03_10-00-22" 
src="https://github.com/user-attachments/assets/9ffb8ef1-1583-4d82-b26c-82293aab098a";
 />
Netty 空轮询告警持续循环打印:Selector.select() returned prematurely 512 times in a row; 
rebuilding Selector!
大量 Thrift 连接重置异常:java.net.SocketException: Connection reset
at 
org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:176)
报错来源两处:
IoTDB-ClientRPC-Processor:业务客户端僵死连接被 RST
IoTDB-ConfigNodeRPC-Processor:DataNode <-> ConfigNode 集群内部 TCP 连接重置
问题复现链路推测
1 Windows 长时间熄屏待机,网卡省电策略强制切断闲置 TCP 长连接(无正常四次挥手,直接 RST);
2 唤醒电脑后 DBeaver 发起新查询连接,服务端开始批量处理大量已经僵死、被重置的 Socket 通道;
3 触发 Netty Selector 持续伪唤醒,进入空轮询;
4 Netty 尝试执行rebuildSelector()自愈,但在 IoTDB 2.0.6 当前场景下自愈失效,无法解除死循环,CPU 永久爆满。
已尝试优化操作(未彻底根治,仅降低概率)
1 修改iotdb-system.properties增加集群 RPC 超时:
dn_internal_rpc_timeout_ms=30000
cn_internal_rpc_timeout_ms=30000
rpc_idle_timeout_ms=300000
cluster_rpc_idle_timeout_ms=300000
2 JVM 启动参数追加 Netty 优化参数:
3 Windows 网卡电源管理:关闭【允许计算机关闭此设备节约电源】,阻止网卡休眠断连;
4 SpringBoot SessionPool 客户端配置连接超时、获取会话超时。

GitHub link: https://github.com/apache/iotdb/discussions/18382

----
This is an automatically sent email for [email protected].
To unsubscribe, please send an email to: [email protected]

Reply via email to