在tidb-server服务出现内存快要消耗怠尽时,对tidb-server有没有快速回收内存的办法或参数?

这个只能把大会话的sql杀掉,然后操作系统层面回收内存吧

如果内存确实将要耗尽,不关数据库,只能echo 3 > /proc/sys/vm/drop_caches手工回收

咦,版本不是6.5.0么?看你帖子选的版本是6.5,6.5的内存管控有了比较大的提升,之前版本的内存统计有缺陷,有些场景的内存会漏记,导致容易OOM。6.5之后OOM问题就降低了很多。

1 个赞

这个帖子不是我发起的 :joy: :joy: :joy:

额,没注意到,不过5.2的话确实有可能不释放,可以尝试升级一下集群版本。。

我这边的集群版本是v7.1.0,昨天也遇到相同的问题了,tidbserver内存有非预期的占用【虽然已经停掉读写请求了】,但是内存居然还是占用50gb左右,比较暴力的方式是先摘除单个tidbserver的实例流量然后重启

可以通过如下方式获取哪个线程占用内存多,但是细节还得分析源码才行
curl -G tidb_ip:port/debug/pprof/heap > heap.profile
然后使用go tool pprof heap.profile → top20命令查看

我一般都是直接restart tidb节点 :joy: 反正是分布式的,反正都慢的不得了了,快速重启就好

我检查了下我们的服务限制的4g,这个一般限制多少为好

看看最大内存大小是多少

内存参数设置好,应该不会oom

不会oom吧

kill会话

kill一下链接