tidb-server OOM 不停的重启

select query_time, query, user
    from information_schema.cluster_slow_query  -- 检索全部 TiDB 节点的慢查询
  where is_internal = false  
    and user = "test"
  order by query_time desc
  limit 2;
1 个赞

我们这边发生这个故障的时候,占内存高的SQL并发也非常高,导致TiDB Server OOM.定位到问题后SQL也优化好了

把tikv和tidb-server单独部署吧

新导入的数据是插入新表还是已经存在的表?如果是插入已经存在的表,且表数据量非常大的情况下,收集统计信息会消耗大量内存,可能会导致OOM.


https://docs.pingcap.com/zh/tidb/stable/statistics#统计信息简介

因为 ANALYZE 语句是开启了自动 ANALYZE 后 TiDB 自动执行的,使用以下 SQL 语句生成 DROP STATS 的语句并执行:
SELECT DISTINCT(CONCAT('DROP STATS ', table_schema, ‘.’, table_name, ‘;’)) FROM information_schema.tables, mysql.stats_histograms WHERE stats_ver = 2 AND table_id = tidb_table_id;

针对这个查询可以把tidb目录下的slow.log清理下

1 个赞

你这个配置10亿不到的数据即使是混合部署也不应该资源不够啊

搞到最后原来是这个鬼东西, 系统自己的统计信息清理:

tidb和tikv争抢内存导致的

可以试试下面的解决办法:

  • 如果确认 OOM 时是系统在收集和加载统计信息的过程中消耗太多内存。

    • 可以指定采样率、指定只收集特定列的统计信息、减少 ANALYZE 并发度等方式减少内存使用。

    • v6.1.0 以后引入了系统变量 tidb_stats_cache_mem_quota对统计信息的内存使用进行限制,引入了系统变量 tidb_mem_quota_analyze控制 TiDB 更新统计信息时的最大总内存占用。

之前就让你重点排查慢查询,你不信。

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