关于 tikv 内存控制参数的疑问

现象
参考 关于限制TiKV实例内存使用的参数都有哪些? - :ringer_planet: TiDB 技术问题 / 部署&运维管理 - TiDB 的问答社区 (asktug.com) 的 ethercflow 的回答。tikv 的内存控制手段之一是设置 storage.block-cache.capacity ,其会自动计算memory-usage-limit。在 4k 的内存页下,memory-usage-limit=block-cache*0.75/0.45,同时因为统计的原因,tikv 实际内存使用会超过memory-usage-limit
问题
1.如果同时手动设置storage.block-cache.capacity和memory-usage-limit,应该如何确定 tikv 内存使用上限?
2.实际 tikv 内存使用远远超过 memory-usage-limit,有没有什么办法进一步分析 tikv 内存如何被使用?

1.理论上不建议显示设置memory-usage-limit,只需要设置storage.block-cache.capacity即可,memory-usage-limit自动会设置为storage.block-cache.capacity*5/3,storage.block-cache.capacity是tikv的共享缓存大小,memory-usage-limit实际应包括storage.block-cache.capacity之外,还需要支持tikv组件占用的内存,tikv内存使用上限应以memory-usage-limit为准
2.首先请先确认你当前机器上是否部署有其他pd或tidb节点,或部署了多个tikv节点,然后反馈下系统总内存大小,以及storage.block-cache.capacity和memory-usage-limit参数的大小

1 个赞

我们最近也遇到过内存告警的问题。
tikv节点系统内存32G,默认memory-usage-limit=24G,数据同步的时候就老收到内存使用率告警。
后来把memory-usage-limit: 16g就好了。

memory-usage-limit
TiKV 实例的内存使用限制。当 TiKV 的内存使用量接近此阈值时,内部缓存会被清除以释放内存。
文档上有这么一句话

内存使用率告警 没有oom吧,没有必要调整参数吧,内存不用也是浪费

前一阵我的kv内存也报警了 我是加内存解决的 ,限制kv内存会不会降低集群性能?

应用内存使用率大于95%。。 告警是统一配置的,都不能关掉。索性直接限制了

能扩容内存肯定好,我这个是历史库,不重要,慢点能接受。就限制了。

1)哈哈,就是想钻牛角尖的知道“同时手动设置storage.block-cache.capacity和memory-usage-limit” 的关系. 理不清关系,看着内存使用率不是预期行为,心里抓痒。
2)我从 os 层 使用 top 看的tikv 的内存使用 %mem,最简单的单 tikv 实例情景

我是通过资源管控解决的。
我的4核8g机器内存告警一直有,就算挂了重启也是2小时内必出。
7.1之前不是很稳定,
7.1设置了资源管控,告警还是有,但内存占用就很稳定,不会突然一跳,导致tikv挂掉。

试用 tiup 的 resource_control 功能,还是新特性 resource control?

新特性resource control,我记录了这个经过。

我自己的体验是,这个特性对tikv的稳定是很有用的,省去了调整一堆参数的麻烦。对同硬件配置的tidb来说,还是偶尔会挂。

storage.block-cache.capacity和memory-usage-limit参数的大小设置的多少,总不会是memory-usage-limit这个小,storage.block-cache.capacity这个大吧。。。

不会的 :joy:。我的环境 system 32G,storage.block-cache.capacity 设置 8G,memory-usage-limit 设置 16G,tikv 的内存使用率 80%

不会吧,根据我的经验,如果storage.block-cache.capacity这个设置8G的话,一般tikv总内存占用不会超过15G。。。你这能占用25G?

所以我发帖想看看能不能弄懂为什么是这样 :joy:

我同样遇到了这类问题,排查了好久,还没有结论

这就太难了,不知道释放的那部分内存

memory-usage-limit没有设置,收到过告警

我这也这样。
总内存64G、memory-usage-limit=52G、storage.block-cache=38G,有出现OOM问题,而且多个TiKV内存到达59G