我要怎么知道他在做什么事
感觉不是在执行某个大sql导致的,这个内存跟一直在缓慢上升,大概3天就满了
像是内存泄露问题,版本是8.1.1
select * from INFORMATION_SCHEMA.CLUSTER_PROCESSLIST t where t.COMMAND<>‘Sleep’ and t.HOST
=‘172.27.0.29:10080’ and time>0
查下正在执行的sql,具体干啥的,多执行一会儿一直看
有日志吗?tidb.log看一下,看看执行的SQL,有没有全表的操作,长时间不释放的连接有吗?
看下统计信息收集任务是不是都跑在这一个节点上
1、看tidb dashboard的top sql,可以查看到这个tidb节点的消耗cpu最高的top 5的SQL语句
2、也可以通过弄一个crontab,不断的记录这些信息到一个日志文件中,看下CPU和内存高的时候,有哪些SQL语句在跑,建议在每次执行的时候,输出下时间点的信息
select * from INFORMATION_SCHEMA.CLUSTER_PROCESSLIST t where t.COMMAND<>‘Sleep’ and t.HOST
=‘172.27.0.29:10080’ and time>0
3、查看下这个tidb节点的慢日志里面有没有一些执行慢的SQL
1.看监控看tidb dashboard的top sql和慢查询。
2.看下流量可视化,看看哪一块最亮,分别看看读和写。看看哪个影响的。
如果负载相同的情况下,内存使用高于其他节点不太正常。最直接的方案可以通过 dashboard 抓一下内存火焰图或者手工收集 curl http://{TiDBIP}:10080/debug/zip?seconds=30 --output debug.zip(debug.zip 需要使用 go tool pprof 分析)。看下当前内存占用情况。
内存高的话我记得有个 issue https://github.com/pingcap/tidb/issues/52826
可以 check 下 internal sql 有没有时常运行这个 sql
是的话应该就是命中了上述 issue ;