逍遥_猫
1
【 TiDB 使用环境】生产环境
【 TiDB 版本】V6.5.1
【遇到的问题:问题现象及影响】 TIKV内存一直持续增长
部署在虚拟机v6.5.1 内存限制了storage.block-cache.capacity 为分配给虚拟机内存的45%(具体值75G),但是内存使用一直持续增长,一直到OOM,然后重新开始增长再OOM
官方文档有 https://docs.pingcap.com/zh/tidb/stable/tune-tikv-memory-performance#tikv-内存参数性能调优
红框这句怎么理解呢? 如果有大查询,不是占用的rocksdb.defaultcf.block-cache-size 设置的空间吗?是占用了 rocksdb.defaultcf.block-cache-size 这个另外的内存空间?
字面意思,缓存查询数据到内存中。在dashboard中topsql查看下是什么sql使用那么多资源,优化下sql或者限制下sql内存使用。
逍遥_猫
3
有 storage.block-cache.capacity =75G 限制时,那使用到75G 左右应该就开始 清除一些缓存吧?为什么会突破限制呢?
你虚拟机内存一共有多少G,另外上面部署了有其他的组件吗?还是只有一个tikv?
那不应该啊,storage.block-cache.capacity参数设置就是限制tidb的block-cache只能使用75G了,其他的包括你红框复制的内容最多使用内存也就是block-cache的2/3了,TIDB之所以让你设置storage.block-cache.capacity为总服务器内存的45%,就是限制tikv总内存占用不能超过系统总内存的75%,需要剩余25%给系统使用。
你可以截张主机内存使用率的图吗?看看tikv进行到底占了多少
256G内存4个tikv实例的话,storage.block-cache.capacity建议分配多少
路在何chu
(Ti D Ber Ass Gn Qs R)
9
我理解这个意思,应该的排序,分组要用临时内存,这时候要用到系统内存
tidb菜鸟一只
(小菜一颗)
10
256/4*45%=28G,如果是多实例的tikv的话,还是按我上面说的,先留25%给系统,剩下75%分给4个实例,其中每份的3/5就是storage.block-cache.capacity参数大小
明白了,谢谢。
256x0.75/4/5x3=28.8