SQL空读region死循环空转

【 TiDB 使用环境】线上环境
【 TiDB 版本】v5.3.4
【复现路径】暂时没有复现
【遇到的问题:问题现象及影响】
故障现象:SQL 运行时间超过20000s以上
故障影响:影响线上业务跑批调度继续运行
诉求:解释这种离奇现象,进一步加深对TIDB的了解!
日志现象:SQL开始运行时间 2024-11-5 04:17:59 (startTS解释而来)
第一条空转日志:


其他空转日志:

空转相关region 13199953 信息

其他尝试操作:
1、发现一直循环空读这个region,怀疑是region有问题。尝试手工split region后,发现新的region也开始循环空读,非常异常
2、尝试查询region中的表,发现select * 没任何异常,数据读取正常
3、尝试查询各个release版本BUG列表,无果(有可能漏了或者我不认识?)

【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面

坐等各位大佬,各抒己见

region leader 给迁移下试试(Region 的问题要从 PD 来排查了)

你的版本好低,不考虑升级么

这物理机好多内存,,哇~

版本升级是在进行中的事了,升级周期很长,估计得年后才能上线新版本啦。
我们线上所有版本都是5.3.4呢… 这个问题是第一次发生,挺奇怪的呢。

leader retransfer ,这个理论上我split后,会触发一次新region leader选举的。没留下截图 :sweat_smile:

先发出来执行计划看下吧,如果是一直在执行,可以使用 explain for connection https://docs.pingcap.com/zh/tidb/stable/sql-statement-explain#explain-for-connection

谢大佬指点。
这个当时看了,大概几百行的执行计划…SQL很庞大。所以我优先去分析的这个conn=13对应的 tidb/tikv输出的日志信息,发现仅有 上边截图的 rocksdb_read_byte 这些全为0 的信息,且已经无限循环了好几个小时。

应该先看执行计划的,你那个日志说明不了问题

我也想看看是什么sql,这个应该是执行计划生成的不对吧。贴下执行计划。

这个有没有看Region的调度状态和相关日志信息,有无Leader选举失败、Region分裂或合并失败等异常情况

这个确认过了,在term 42后,就稳定保持,leader恒定状态了。 没有region分裂和合并事件发生。 手动触发split,也一切正常。

已经通过 pd-ctl tikv-ctl 查看了region相关的信息,split尝试切割region。 v5.3.4 版本 我看也没有其他可以对region进行的操作了 :rofl:

找到region 相关的表,新建一个表,把数据迁移到新的,删除旧的表,这样这些region 就会被回收掉了…

这个方式可以解决你的问题么?

这个方法没用过。如果近期复现的话我试试!

region相关的表只有9800行,理论全部放入内存都不至于。
现象有点像是,读不出来… 但是服务器io也挺空闲的。

不知道有没有人遇到类似的BUG 。 我也是头一次遇到这么诡异的现象。