tidb执行sql完成后内存能手动释放吗?我这边发现内存不会立即释放,后续执行sql可能会导致内存占用越来越高,最后导致被系统杀掉。

重启可以释放。。。不然就等 go 内存 gc

有内存调度机制来释放内存,但不是执行完马上就释入内存的

内存会自动释放的,不需要手动释放,你的版本是多少,如果版本低于6.5的话建议升级版本,6.5之后版本释放操作会积极很多。

1 个赞

tidb server是go语言开发的,go语言内存有GC机制,定时释放,具体看tidb配置参数有tidb server 的GC部分

明显释放。要不你这图就一直往上涨。之前用其它数仓库就遇到过。

1 个赞

感觉还是着重排查大sql比较好

1 个赞

这块还的考虑 大sql了,会释放,但是有时间很慢

可以试试调低下面这个参数,让 golang gc 更频繁一点

https://docs.pingcap.com/zh/tidb/stable/system-variables#tidb_server_memory_limit_gc_trigger-从-v640-版本开始引入

不需要手动释放,会自动回收

重启大法

GC自动释放,或者重启

不会立即释放,会有一个gogc的动作,一般不会越来越高导致重启,那意味内存泄漏中了bug

你是什么版本的 TiDB,高版本 TiDB 挺好的,OOM少了很多

GC自动释放,或者重启

哈哈哈

二进制还是K8S部署?

自动调节慢

重启效率最快

截图的版本是5.1.1就是占用内存太高了被系统杀掉进程重启,这两天升级了版本到7.1配置了内存限制,但是发现内存回收太慢了。导致很多查询被tidb杀掉没有返回结果。这种扩容tidb节点会有明显提升吗?