TIDB-SERVER间歇性OOM

【 TiDB 使用环境 】生产环境
【 TiDB 版本】 v5.2.1
【遇到的问题】 TiDB单节点内存持续升高,最终oom
【复现路径】
【问题现象及影响】heap_20220714 (1.2 MB)
TiDB单节点内存持续升高,周期性oom

有混布组件吗,查看是不是有慢查询呢,还有 tidb_mem_oom_action和tidb_mem_quota_query是什么设置呢

没有混部组件,tidb_mem_oom_action和tidb_mem_quota_query是官方默认配置,慢查询有,但很少了。

image

tidb日志里看看有没有expensive query

找一下日志,看看oom的时候有哪些sql在运行,这个tidb都是记录下来的,看看当时各个sql的内存使用情况

image

看过OOM风险的sql了,都是一些简单的SQL,内存占用不大。

image

slowquery 找出来。执行计划发一下

慢查询文件10几M,不好上传,这幅图是撒意思呢?

检查是否存在上述情况

排查参考: https://docs.pingcap.com/zh/tidb/dev/tidb-troubleshooting-map#32-oom-问题

  1. tidb的内存有多大
  2. expensive query 找到 执行计划发一下


查一下你出问题的tidb slowlog的情况 是否文件过大以及磁盘情况 发一下截图

[2022/07/14 10:47:21.038 +08:00] [WARN] [expensivequery.go:178] [expensive_query] [cost_time=66.726202067s] [cop_time=284.08799785s] [process_time=224.204s] [wait_time=5.155s] [request_count=97] [total_keys=1352168] [process_keys=1218325] [num_cop_tasks=97] [process_avg_time=2.311381443s] [process_p90_time=6.198s] [process_max_time=7.207s] [process_max_addr=10.70.77.30:20160] [wait_avg_time=0.053144329s] [wait_p90_time=0.18s] [wait_max_time=0.413s] [wait_max_addr=10.70.77.30:20160] [stats=tbl_sim_info:434573453576634369] [conn_id=305183] [user=iovcmiot_sim_prod_user] [database=iovcmiot_sim_prod] [table_ids=“[1365]”] [index_names=“[tbl_sim_info:idx_tbl_sim_info_cust_serial]”] [txn_start_ts=434573613274759169] [mem_max=“18786575 Bytes (17.9 MB)”] [sql="select count(*) from tbl_sim_info where cust_serial=‘20210930777010’ and is_delete = 0 "]
image

slow_log 写入是否很频繁以及 slow-threshold设置是多少,集群慢sql是否有很多

slow-threshold阈值300ms,慢SQL当时有一些,但slow_log文件不大,不知道为撒会占用这么多内存。

1.你的内存多大,扩内存
2. 找到当时的慢sql,处理掉 低于300ms
3. 调整slow-threshold 300ms 至更高

32G内存