TiDB oom 记录到临时文件的 running.sql 的查询选择

【 TiDB 使用环境】生产环境
【 TiDB 版本】5.0.4
【遇到的问题:问题现象及影响】
TiDB oom 记录到临时文件的 running.sql 和慢查询的sql中内存存在较大差距.

running.sql中最大内存10G+

## 
mem_max: 11538442372 Bytes (10.7 GB)

OOM之间同一查询内存消耗20G+

请问:

  1. OOM记录的sql按照哪些标准选择的top 10?

  2. running.sql文件的 max_mem和 慢查询的max_mem 是占用tidb的内存还是占用tikv内存?

  3. 数据库内存分布如下图有很多尖峰,请问tidb-server如何管理内存的?

你什么版本也没写 6.5 和之前5.4的内存管理不一样。 一般我们是限制单个sql执行数量

怎么部署的?tidb和tikv在一个节点上么?

老版本5.0.4。
近期出现oom事故,需要仔细调研tidb内存管理。

独立部署的

你截图是tidbserver的监控么,tikv的内存监控看下

25个TiKV所以,tikv性能还ok。没发现大量内存抖动情况。

5.0是有大量oom的 主要还是开发sql写的不合理。你配置一下限制就能解决 max_execation_time
https://docs.pingcap.com/zh/tidb/stable/configure-memory-usage 具体看这个文档

oom是大家一起死 tidb server 停机重启,你配置了限制是引起大内存占用的sql 无法执行。后续通知开发修改 差异在这里

tikv是不会oom的内存瓶颈在tidb的服务器上你加大tidb的内存也能缓解

来自官方的oom视频

这个已经调整了。ld想要更详细的内存分配方法。

把并发限一限,再把 tidb_enable_rate_limit_action 设置成 false 试试看看。
你这个sql长的什么样的?

  1. running.sql文件的 max_mem和 慢查询的max_mem 是占用tidb的内存还是占用tikv内存。

→ tidb的内存。

1 个赞

数据库内存分布如下图有很多尖峰,请问tidb-server如何管理内存的?

可以看下 tidb_enable_rate_limit_action 变量的解释,是一种流控措施。

1 个赞

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