【 TiDB 使用环境`】生产环境
【 TiDB 版本】5.4
【遇到的问题】
内存监控图:
内存分布:
TIDB内存持续没有释放,这个问题我再另外一个帖子提到过
TIDB内存持续没有释放,最终卡死宕机 - #12,来自 h5n1
当时改了tidb_analyze_version=1,稳定很多了,以为不会上涨了,但是这只是上涨的很慢,最近几天还是持续上涨没有释放。
本来想在原来帖子继续回复的,感觉那个帖子垫底凉了,只能再发一个帖求助了。
按照这个上涨的速度,我担心过不了这两天,系统就得手动重启释放内存了,不然就要凉凉。谢谢各位大佬
监控导出:
main_tidb-Overview_2022-04-15T12_18_40.319Z.json (966.0 KB)
我在github上貌似找到了类似的issue
https://github.com/pingcap/tidb/issues/32413
1 个赞
上次改了analyze的版本之后,有清除已有的统计信息吗?
可以按照提示清除所有统计信息,重新收集一次
统计信息简介 | PingCAP Docs
2 个赞
大佬,有没有办法判断出来是什么东西占用了内存呀,这个持续不释放感觉不是个正常现象
1 个赞
xfworld
(魔幻之翼)
5
2 个赞
如果不是自动analyze导致的,查下慢sql和expensive sql吧
1 个赞
wisdom
(wisdom)
8
这个好像一直在执行sql,如果业务上并没有执行的情况,那就只有tidb在后台执行一些统计了,看看dashboard 能不能有些发现,截图看看
1 个赞
expensive_query
上周有,但是上周我处理过一遍了,现在搜基本上是没有了的。
1 个赞
expensive sql 基本上没有,可以看一下我回复上面那一位大哥的截图
慢查询上周我已经处理过大部分了,剩下的频率很低,或者是数据库自身的sql,例如analyze table,机器CPU的负载也很低了,慢sql很多的话CPU理论上是很高的
1 个赞
大家可以看看这个负载,周末压力真的不能再小了,数据库也就平均1k的qps。但是tidb的那个内存就是释放不下来,目前还不会宕机,我就是担心一直上涨耗完内存,最终不知道在某个时间节点GG
1 个赞
xfworld
(魔幻之翼)
15
一般不会推荐:在生产,混布 PD 和 Tidb
PD 是核心的调度中心,必须保持高可用的状态,一旦出现问题,方便扩容节点来保持状态
tidb 是无状态的节点,一个节点不够用,可以扩充其他的节点
建议你先将 PD 和 tidb 拆开…
2 个赞
混布 PD 和 Tidb是导致这个内存不释放的原因吗? 前两天快耗完机器内存了,没办法只能重启,瞬间就释放出来了
1 个赞
h5n1
(H5n1)
17
pd /tidb server监控面板都有内存记录,哪个高看下
1 个赞
tidb中有一个触发gc的配置,默认值gogc=100,意味着内存翻倍后触发gc,改成50就是内存增长50%后触发gc,越低触发的越频繁,对性能影响越大。
[performance]
gogc = 50
也可以通过ulimit限制单个进程的最大内存,超了就oom,然后自动拉起。
也可以限制tidb的最大连接数,连接数很多的话,会导致内存涨。如果前面有nginx做代理,可以改个平衡策略为least connection
当然以上都是治标的办法,最终为什么高,还是得查查。目前我知道一种情况是连接数增加的多就会导致高。
1 个赞
Gin
(Gin)
20
TiDB 的启动脚本中是否配置了 GODEBUG=madvdontneed=1 用于加速内存释放?
1 个赞