You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
环境信息

IoTDB 版本:2.0.6(单机集群,1 ConfigNode + 1 DataNode)
操作系统:Windows 11
JDK 版本:OpenJDK 11
部署模式:本地单机集群,全部服务运行在同一台 Windows 机器
客户端:SpringBoot SessionPool 写入持续运行;故障触发时使用 DBeaver 执行查询
现象描述数据库持续稳定写入数据数天,电脑长时间熄屏待机。开机后打开 DBeaver 连接 IoTDB 执行查询,一段时间后 DataNode 进程 CPU 直接 100% 持续占满,永不自动恢复,只能重启进程解决。
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 客户端配置连接超时、获取会话超时。
All reactions