TiKV内存分析(storage.block-cache 只给了5G,但是总内存占用了46G,想知道如何才能将内存降下来)

TiKV 内存使用情况里有说明:

在生产中在storage.block-cache 只给了5G的场景下,总内存占用了46G,想知道如何才能将内存降下来?尤其是有办法限制第2部分SELECT在内存中的数据BUFFER大小么?

7.5之后支持分析TiKV内存了,看了下这里函数入口main只用了31%,61%都是另外一个clone占用的


附件是火焰图的原始文件
profiling_2024-03-14_15-34-38.zip (107.4 KB)

torage.block-cache.capacity 给 5GB,tikv 总内存能到 46 :thinking: 我怎么感觉是内存没限制住啊。

我也感觉是,总感觉不符合直觉,所以想让大佬们分析下,TiKV内存里哪些数据才是大头?

新版本默认是共享线程池,基本上 storage.block-chache.capacity 就是大头。你可以认为这个参数 *2.3 就是 tikv 的内存占用了。

1 个赞

这个应该是 RPC 那部分内存,比如你 tidb-server 收取数据比较慢,导致 tikv 和 tidb-server 的数据传输比较慢,导致 rpc 那部分数据放内存无法释放。这个有参数的


正常没有这种情况的,除非你硬件环境有点问题。

1 个赞

不应该啊,我以前测过,肯定能限制住,不会超过的

一般能限制住,能看看你的部署架构吗?


貌似找到原因了,因为我没主动设置memory-usage-limit,默认会占用75%内存,计算了下56 * 0.75 = 42,和现在的46G内存使用量差别不大。

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