tidb小白
(Ti D Ber Emsp S Ckm)
1
【TiDB 使用环境】生产环境
【TiDB 版本】8.5.1
【部署方式】私有云自建机房
【操作系统/CPU 架构/芯片详情】centos7.9
【集群节点数】 7
【遇到的问题:问题现象及影响】
1、随着集群的使用时间越久,tidb server的内存也不断上涨,长时间都维持在70%~80%左右,有时甚至冲到90%,这种情况正常吗?感觉像内存长时间不释放一样
2、按照文档https://docs.pingcap.com/zh/tidb/stable/configure-memory-usage/进行查看,tidb_mem_quota_query的值设置为8G,也确认了 tidb_mem_oom_action的值为cancel,但是查看tidb的oom日志,发现也没有特别消耗内存的sql
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【其他附件:截图/日志/监控】
随缘天空
(Ti D Ber Ivw R7o Pj)
4
滚动重启一下试试,如果短期内上升到该水平就是正常的占用
tidb小白
(Ti D Ber Emsp S Ckm)
6
之前重启过,是可以释放的,但是这种问题,只能重启解决吗 
tidb小白
(Ti D Ber Emsp S Ckm)
7
重启是可以解决,可以平稳运行一两个月吧。但是这种问题,只能靠重启吗 
suyh1988
(Ti D Ber Cte Vr F8 O)
8
SET GLOBAL tidb_server_memory_limit = “32GB”;
可以用这个去限制总的内存,另外tidb_mem_quota_query的值设置为8G 这个是单个sql的最大内存,如果你的大sql并发高很容易内存使用量就上去了。
tidb小白
(Ti D Ber Emsp S Ckm)
9
限制这个tidb_server_memory_limit 有什么影响吗?值设置为多少比较合理,有个什么算法吗?比如我现在tidb服务器的内存是47G,我设置多少较为合理,设置小了有哪些负面影响
;
这个我看了慢查询历史,并没有几个sql能达到8G的,目前最大的只有4G,而且只是凌晨跑个两三次,平时的sql内存还是比较正常的
这不算高啊,tidb也是又缓存的,sql执行完了,不会立刻释放内存的。
xfworld
(魔幻之翼)
14
最好不要混搭,混搭在一起比较难控制
限定的话,有一定的效果,但是业务上跑起来如果跑不动,又难免要折腾很久
随缘天空
(Ti D Ber Ivw R7o Pj)
15
没有更好的办法,你这内存占比也算正常,缓存本身也占用资源,这部分是可以循环利用的
纯白镇的小智
(Ti D Ber Qm Qja01 M)
16
尽量避免大表全表扫描和无索引的 JOIN,你这里感觉是资源释放得慢,但是看着应该是正常
异乡的大人
(Ti D Ber 2 Qs S2z Ws)
17
这个占比还是正常的,看着都是业务正常使用时间区间内
suyh1988
(Ti D Ber Cte Vr F8 O)
18
主要就是避免oom,如果使用的内存超过限制就会出现查询报错
PD和TiDB都有缓存的数据,没有报错,这种占用应该是正常的