tidb-server oom问题排查

版本:v5.4.3
问题:最近一直收到告警 TIDB_node_restart
查看监控使用内存很多导致,因为业务很杂使用的很多,我想定位到具体的问题SQL怎么定位?

下面是一些问题截图:
image

尝试过在Dashboard上搜索慢查询SQL,好像并没看到占用这么大内存的SQL,不知是不是因为SQL没有执行完成所以日志没记录,具体要怎么定位呢?

你自己已经定位到了 就是这些sql

查看tidb日志,会有expensive的SQL

https://docs.pingcap.com/zh/tidb/stable/troubleshoot-tidb-oom

把写sql的人骂一顿。然后把他关小黑屋。把他们组的应用单独部署在一个tidb server前端组件里面。给他们升级专线。哪个tidboom 他自己业务就不可用 不影响他人

你上面的第一条sql先把执行计划发出来看看

这个可以的

才4条400多M的,不至于啊。我们以前集群内存才16G*3,晚上的时候经常被统计的应用弄N条最大内存1G的也没事。会不会是别的原因

你看我监控,我OOM时的内存占用达到了60多G ,dashboard里面才几百M ,对不上啊

先把top10的sql优化完再看看效果的,很多时候不是单独的某一条sql导致的。

做下性能分析,机器问题的时候。分析火焰图,在结合慢sql查看具体的原因

这个可以的

一般都是看tidb 日志中的expensive日志

Slow log 是 SQL 执行结束的时候记录的,oom 的时候进程直接被杀,确实有可能记录不到,记录到的你可以先看看为啥占用内存过多,然后去 Dashboard 上日志搜索功能搜索 tidb server 的日志,搜索 expensive 关键字,又能找到一些 SQL

直接做个监控查日志里面的关键字expensive,不过有的抓不到

基于dashboard 自己优化吧