tikv 服务内存占用大

为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:

【TiDB 版本】v4.0.8

【问题描述】TIDB部署后使用这么久,发现三节点服务器的tikv服务占用系统内存越来越大,原本服务器内存才32G,每个tikv节点都使用了12G多的内存,不知道会不会越来越大。有什么方法能让这些内存释放掉吗?需要优化什么参数吗?

image

若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。

看下是不是 block-cache 的占用

感谢您的回复!

请问block-cache-size占用的内存是包含在tikv-server服务中的吗?这不能释放吗?storage.block-cache.capacity 参数如何设置,设置多大要根据什么定义呢?

block cache 是包含在 tikv-server 中的,使用之后不能释放,这是类似于 MySQL innodb buffer pool 的概念,是为了加速数据访问效率的,数据缓存。

默认应该是设置为了机器内存资源的 45%,可以根据 block cache hit 监控看下数据访问命中率。如果命中率比较低,且系统内存资源还有剩余,可以适当加大。

麻烦问下 block cache hit 这项监控在哪个 dashboard 里?

默认应该是设置为了机器内存资源的 45% -----> 意思是block cache还会占用内存到 (32G * 45% = 14.4G ) ,才不会继续增加内存占用吗? 由于目前tikv的节点也有一些别的服务在跑,就是系统内存资源剩余不多了,所以想要控制tikv-server 的内存占用,比如说内存控制在5-6G这样子。

还有这个block cache hit 的参数不是很懂~~~

在 TiKV-Details -> RocksDB KV -> block cache hit

谢谢!!

那就将 block cache 设置的少一点

block cache hit 就是 block cache 这块内存的访问命中率,请求需要访问的数据量有多少是可以直接在 block cache 中直接读取到的,不用去磁盘上读取的,这个就是访问命中率。

如果我 block cache 设置成了5G,内存会立马降到5G吗?如果是这样的话,清掉的数据缓存没有了,部分请求数据要去磁盘读取吗?不知道我理解对不对。

嗯是的

我是使用 tiup cluster edit-config tidb-cluster 来改配置的,请问是这样配吗?
image

刚查到你回复的这篇文,为啥是这样配置的呢?

我按照这种 storage.block-cache.capacity: 5GB 改的,重启了tikv节点,目前内存是降下来了,不知道配置对不对会不会生效

如果设置了 storage.block-cache.shared 为 true 的话,这样设置是可以的
https://docs.pingcap.com/zh/tidb/stable/tikv-configuration-file#storageblock-cache

可以观察一下最终 block cache 内存使用情况,是否限制住了

storage.block-cache.shared 默认值为 true,今天观察block cache 内存确实是限制住了,感谢!:+1:

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