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]
