TIDB内存持续没有释放,最终卡死宕机

【 TiDB 使用环境`】生产环境
【 TiDB 版本】5.4
【遇到的问题】

TIDB内存持续没有释放,最终卡死宕机。



看这两个图,在10:22分左右内存TIDB内存占用持续上涨到最大值。接着应该是撑不住了。感觉像是整个服务器开始gc,然后CPU就上涨到99%。CPU到达99%后,持续了20多分钟都没下来,服务器一直不可用了。只能restart服务解决。

缺乏排查思路,麻烦大佬们帮忙看看了。谢谢。

现在又出现了,感觉今晚要GG,麻烦大佬们帮忙看看,内存分布情况导出在评论下面了

2 个赞

我遇到同样的问题,我是虚拟机宕机了4个小时,然后操作系统强行kill了tidb的进程,虚拟机才恢复访问。
建议你排查一下慢sql,重点是消耗内存大的sql。可以在tidb日志中查看到oom前最后执行的几条sql语句。然后看看消耗内存很大的 sql是不是有落盘行为

3 个赞

5.4默认tidb_analyze_version 应该是1,但是你检查一下,如果tidb_analyze_version=2的话,会有bug导致tidb oom

2 个赞

tidb的log贴一下吧

1 个赞

1,系统内存多大。
2,内存回收怎么设置的。

1 个赞


这是发生故障时间点附近的日志。

我日志里面非常频繁的打“schemaLeaseChecker is not set for this transaction” ,故障开始的时候,就开始打“[pd.go:152] [“get timestamp too slow”] [“cost time”=65.620823ms]” 了

2 个赞

机器配置8C32G 500ESSD。

内存回收设置怎么查?

1 个赞

5.4 tidb_analyze_version 的默认值是2,不至于默认配置埋坑吧:disappointed_relieved:

1 个赞

排查一下oom前有没有analyze table,如果有,就把tidb_analyze_version 改成1试试。我不太确定tidb_analyze_version=2的问题在5.4还存不存在

2 个赞

参数都优化了吗?

1 个赞

我这里安装tidb之前是按照文档里面挨个调了一遍系统层面的参数的

1 个赞

再出现内存异常增长是,按可以按如下看下内存哪个占的多
curl -G tidb-server:10080/debug/pprof/heap > heap.profile
然后使用go tool pprof db.heap.prof --> top命令查看

1 个赞

确实是这个问题,改了目前稳定多了。我在另外一个帖子也找到了类似的答案。

1 个赞

此贴暂时终结。确实是tidb_analyze_version=2的问题,目前改为tidb_analyze_version=1,稳定很多了,基本不会持续上涨了。3天大概上涨了1个3GB 左右内存,暂时先观察一下。

类似帖子:如何快速及时释放TIDB、TIKV占用内存

建议官方大佬再测一下这个case,是不是这个参数有问题。
谢谢大家!!

1 个赞

你好,我现在内存还是持续的有上涨不释放的情况,不过变慢了一些。我按照你这个思路导出来了,麻烦大佬帮忙分析一下为啥不释放内存

2 个赞

存在,我们遇到了

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