tikv有类似tidb的 tidb_server_memory_limit_gc_trigger 参数吗?


tikv有类似tidb的 tidb_server_memory_limit_gc_trigger 参数吗?
TiKV的内存使用是不停增长的吗?有么有类似 tidb的 tidb_server_memory_limit_gc_trigger 参数?

  1. memory-usage-limit:该参数用于控制 TiKV 实例的内存上限。您可以根据实际情况设置合适的值,以确保 TiKV 不会占用过多的内存资源。该参数的值应根据 block cache 的大小进行配置[1]
  2. 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 个赞

问题1: 首先,tikv的内存绝大部分情况下不会是无限增长的,它会根据配置的内存使用量进行使用。有一个场景,当你读取大量数据且返回给tidb的网络较慢的时候,会造成数据堆积,这个时候tikv 内存使用量会陡增,容易oom。

问题2: tikv 有关内存的常用配置参数如上,具体内容和说明参考官网即可。

1 个赞

每个组件都有控制内存的参数

设置过 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还用着呢