TiKV内存参数以memory-usage-limit、 storage.block-cache.capacity 哪个参数为准?

【 TiDB 使用环境】生产环境
【 TiDB 版本】7.1.0
【复现路径】TiKV实例总内存64G
1、TiDB原版本5.0.4 只设置storage.block-cache.capacity=38GB
2、版本升级至7.1.0后设置memory-usage-limit = 50G调整2个月后,内存飙升到60GB,出现TiKV OOM

【遇到的问题:问题现象及影响】
问题:
1、TiKV同时设置memory-usage-limit、 storage.block-cache.capacity 哪个参数为准?
2、为什么memory-usage-limit参数限制没有生效(未达成持续释放内存预期)?

历史帖子关于限制TiKV实例内存使用的参数都有哪些? - #2,来自 ethercflow


tikv 内存 不仅仅有 block-cache

这一块确实不太好理解

部分帖子说memory-usage-limit= storage.block-cache.capacity *0.75/0.45

个人理解: memory-usage-limit是全局的,是针对tikv进程的,而block-cache是设置缓存的大小

我也这么理解 ,但是memory-usage-limit没限制住。

tikv节点不只是block cacahe内存

有混布吗

独立部署

storage.block-cache.capacity为准,你预期50G,那么独立部署按50/1.7来设置,也可能更保守点,比如先设置25G

不要用memory-usage-limit这个,就用storage.block-cache.capacity,假如你的tikv主机内存64G,storage.block-cache.capacity就设置为64*0.45=28.8G即可。

1 个赞

正解,最多不超过百分之60

如果 同时配置了2个参数:

memory-usage-limit < storage.block-cache.capacity 5/3 那么 真实的 memory-usage-limit=storage.block-cache.capacity5/3吗

需要自己测试,会固定到一个数字上

不太好理解,来向各位学习

storage.block-cache.capacity整个参数可以更好的限制住tikv的内存使用,memory-usage-limit 并不好用,所以我都推荐用前者

1 个赞

get!

还没有真正部署过

get