tikv内存超过block-cache设置的值

【 TiDB 使用环境`】生产环境
【 TiDB 版本】5.4
【遇到的问题】tikv内存高居不下,是还有别的参数吗
【复现路径】无
【问题现象及影响】
tikv内存一直不释放导致集群资源不够用
【附件】
image

TiKV内存使用一般就是storage.block-cache.capacity加上2.5GB,这2.5GB是memtable占用的内存大小
https://docs.pingcap.com/zh/tidb/stable/rocksdb-overview#rocksdb-的内存占用

从监控看这个参数已经生效了,但是内存还是会一直往上涨


这句话貌似是有问题,我没配置这个参数的时候,说默认是内存的45%,但是实际会直接将集群资源吃满为止

服务器上只有一个TiKV实例吗?从监控上看之前Block cache size是多大值呢?如果担心TiKV进程过度使用内存,还可以用resource_control中的memory_limit来限制它的总内存使用上限
https://docs.pingcap.com/zh/tidb/stable/tiup-cluster-topology-reference#global

1赞

之前的,然后我修改storage.block-cache.capacity为5G,现在看监控它确实是5G,但是查看pod使用的资源已经到7G了。多节点,一个节点一个tikv

容器这块儿我不太熟,建议显式设置block-cache后再观察一下

现在已经设置了,就是设置以后没啥效果,来问一问啥情况

block-cache设置成5GB后,总内存最高应该会到7.5GB左右,也可能稍微会高一点,coprocessor有时候需要缓存数据

1赞

你的意思是说这个memory_limit的值加上block-cache的值是tikv使用总内存的值吗

说的不是一个同memory_limit,你发的这个是raft engine的配置,参考我之前提过的一个问题

:joy:

官文说的只需要设置storage这个共享参数就可以,但是现在设置了,没用内存总量超过了设置的值,我就想知道为啥会超过?

你目前tikv 节点的内存使用高, 我觉得相关的内存配置参数都可以检查一些
![|450x249](file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml9604\wps4.jpg)

![|553x105](file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml9604\wps5.jpg)

![|553x161](file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml9604\wps6.jpg)

你可以参考: https://docs.pingcap.com/zh/tidb/stable/tune-tikv-memory-performance#tikv-内存参数性能调优

就是根据你发的链接操作的,没有执行sql语句,只执行插入操作

搭楼问一下,这个需预留一些内存作为系统的 page cache,是TIDB根据系统情况自主设置,还是在配置文件里面有默认的配置,如果是配置文件里,那么是否可以进行修改?

这个 应该就是tikv 所有内存配置之和 小于系统总内存,剩余那部分就给操作系统使用,

如果是在K8S集群的场景下,我限制了TIKV所在POD的内存资源,比如10G,那么当这个POD的内存占用到达10G时,TIKV服务会怎样呢?后续再产生的数据,会怎么处理呢?

k8s 我没用过不太了解了

你可以观察一段时间,你现在的业务量大吗?
有没有可能就是释放需要一个过程,业务量大的时候释放会更慢些呢