Tidb异常重启问题

【 TiDB 使用环境】生产环境
【 TiDB 版本】V5.4
【遇到的问题】TiDB server异常重启
【复现路径】通过Superset查询交易数据
【问题现象及影响】
发现tidb server内存使用异常,操作系统直接kill 掉 tidb server

通过dmesg查看异常重启

内存控制

如何控制tidb server 实例的内存?避免异常重启tidb server对业务造成影响

1.慢sql
2. expensive sql 搜索日志看下

sql已经找到。但是有什么方式避免tidb sever 重启。或者对类似sql直接返回异常提示

就是OOM了,把sql该优化优化,去掉那些全表扫,优化不了的话限制
https://docs.pingcap.com/zh/tidb/v5.4/tidb-configuration-file#token-limit
https://docs.pingcap.com/zh/tidb/v5.4/tidb-configuration-file#oom-action
https://docs.pingcap.com/zh/tidb/v5.4/tidb-configuration-file#mem-quota-query
这仨配置合适了,tidb内存的上限基本上就确定了。如果再多,基本上就是连接数增加了,
连接数也飙涨的话,把max-connection也限制下。

正确途径是从业务方解决:控制连接数,控制sql的执行计划
业务方不好解决,就上面几个参数一组合,至少不至于把tidb搞oom

目前是我通过
oom-action,mem-quota-query,max_execution_time来控制sql的查询内存,和执行时长。如果大的sql执行,超出执行时长,直接终端sql的执行,来保证tidb server的稳定性。