反馈一个OOM问题

Bug 反馈

【 TiDB 版本】v7.1.1
【 Bug 的影响】
tidb-server OOM, 不断的重启,设置内存使用上限后,虽然不重启,但是内存定期暴涨,然后被限制

系统自动清理历史统计信息 mysql.stat_histroy过期信息:
delete from mysql.stats_history use index(idx_create_time) where create_time> select now() -INTERVAL 604800 SECOND

因为这张表中有大字段,如果以上语句命中数据量太大时,会占用超大内存,导致tidb-server OOM

【 临时解决方案】
手动删除,每次删除100条,甚至更少的数据,直至将过期数据全部删完。

这个bug的复现路径是什么

是每次必现的吗

也是第一次遇到,不知道如何复现。

应该历史数据清理失败,累计到一定量之后就会OOM了,至于为什么明明是高频清理,却还能累积到那么多,这个就不清楚了。 反正是一旦失败,后面就基本上别想成功了,因为一定OOM

你这一个sql能用40g内存呀

可以写个脚本定时统计这张表数据,达到什么程度时触发自动删除机制,避免一次删除大量数据出现异常

您好, 感谢反馈, 应该是个已知问题
已经修复了, 修复方法与您的临时方案一致(batch)
详见 : OOM in the ClearOutdatedHistoryStats · Issue #48431 · pingcap/tidb (github.com)

1 个赞

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。