tidb 无法限制住内存

版本: Tidb 4.0.12
背景:
由于Tidb 目前是和其它db 混合部署的,当前设置tidb server 内存参数为server-memory-quota 24GB,单条sql 运行最大内存参数tidb_mem_quota_query 1GB,基本一直正常平稳运行,内存占用不超过10GB,突然在1月18号18:20-18:35 这段时间内存陡增到近200GB 导致整台机器夯死,影响其它db服务

该段时间监控:
image

该段时间慢日志信息:

tidb.log 中存在expensive_query 我随机查看了下一些sql [mem_max=“5738940926 Bytes (5.34 GB)”]

我的疑问:
为啥我设置了tidb server 内存限制参数为24GB,tidb server 实例内存还是占用到了200GB,设置了单条sql 执行最大内存,可是log 显示还是有sql 执行内存最大超过1GB

这个地方的内存统计 好像对于一些 hash join 什么的 统计的不是很准。感觉是这个原因导致的。。。。

还有 你的部署是混合部署,先看下每个组件的内存使用率 先确认是否是 tidb-server 的内存使用率过高导致。

image
确认是tidb 组件占用的

这个咋解决呢,升级版本如何

或者还有什么可以限制tidb server 内存使用的方式

感觉版本比较低 可以考虑试试升级版本。

看了一些案例 应该不是tidb 版本导致的。5.x 也有人遇到过,可能还是有一些大查询能绕过tidb_mem_quota_query参数设置

混合部署的话,建议通过numa把tidb给绑定下,起码不要影响其他的组件

TiDB 6.5版本的 tidb_server_memory_limit 参数看着可以解决TiDBserver的OOM问题
官方文档有写:


系统变量 | PingCAP 文档中心

官方文档中还有TiDB OOM问题的排查方法:
TiDB OOM 故障排查 | PingCAP 文档中心
可以看看是不是对你有用

好的感谢

嗯呢 低版本准备绑核

关注最新直播的讲解
https://mp.weixin.qq.com/s/-DqwzC9MMMK0bbhD9eH-6g

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