tikv有类似tidb的 tidb_server_memory_limit_gc_trigger 参数吗?
TiKV的内存使用是不停增长的吗?有么有类似 tidb的 tidb_server_memory_limit_gc_trigger 参数?
- memory-usage-limit:该参数用于控制 TiKV 实例的内存上限。您可以根据实际情况设置合适的值,以确保 TiKV 不会占用过多的内存资源。该参数的值应根据 block cache 的大小进行配置[1]。
- block-cache-size:该参数用于设置 TiKV 实例的 block cache 大小。block cache 是用于缓存数据块的内存区域,可以提高读取性能。您可以根据实际情况设置合适的值,以平衡内存使用和读取性能[2]。
除了上述参数,还可以通过其他配置参数来进一步优化 TiKV 的内存使用,例如:
- rocksdb.max-open-files:该参数用于设置 RocksDB 的最大打开文件数。如果 TiKV 在某些 Kubernetes 集群中出现 “the maximum number of open file descriptors is too small” 的错误,可以尝试增加该参数的值[2]。
问题1: 首先,tikv的内存绝大部分情况下不会是无限增长的,它会根据配置的内存使用量进行使用。有一个场景,当你读取大量数据且返回给tidb的网络较慢的时候,会造成数据堆积,这个时候tikv 内存使用量会陡增,容易oom。
问题2: tikv 有关内存的常用配置参数如上,具体内容和说明参考官网即可。
每个组件都有控制内存的参数
设置过 block-cache-size 为物理内存的40%, memory-usage-limit的值随着 block-cache-size的值变化了,但是实际TiKV 内存的使用一直持续增长,直到OOM ,然后又持续增长
从grafana监控看到 block-cache-size 的使用一直是在限定范围内
非常不解,到底什么导致了 TiKV 内存使用一直增长呢?
tikv内存设置只用设置 block-cache-size,我测试的结果tikv最大内存是 block-cache-size的1.25倍
block-cache-size后面好像废弃了
https://docs.pingcap.com/zh/tidb/stable/tikv-configuration-file#write-buffer-size
write-buffer-size
- memtable 大小。
defaultcf
默认值:"128MB"
writecf
默认值:"128MB"
lockcf
默认值:
- 当
storage.engine="raft-kv"
时,默认值为"32MB"
- 当
storage.engine="partitioned-raft-kv"
时,默认值为"4MB"
- 最小值:0
- 单位:KB|MB|GB
max-write-buffer-number
- 最大 memtable 个数。当
storage.flow-control.enable
的值为true
时,storage.flow-control.memtables-threshold
会覆盖此配置。- 默认值:5
- 最小值:0
这两个参数改过吗?show config,看看结果如何。
确实写错了,是block-cache.capacity
SHOW config WHERE NAME LIKE ‘%block-cache.capacity%’
不应该,tikv设置block-cache.capacity大小后,tikv进程占用内存不可能超过block-cache.capacity参数的2.25倍的,可以给个tikv的当时异常的监控图吗?
新版本中block-cache.capacity已经取消了
什么版本,7.5还用着呢