k8s模式下tikv内存缓慢增长,最后oom

【 TiDB 使用环境】生产环境
【 TiDB 版本】7.1.0
从部署使用到现在有两年左右的时间,期间内存一直缓慢上升(可能是由于数据量一直在增长),期间每次超出k8s的内存限制就会更新配置,tikv节点会滚动重启,但是慢慢又达到临界值,请问这种情况是正常的吗?有没有什么办法可以控制?
配置文件:
tidb.yml (36.3 KB)
内存截图

tikv 配置下storage.block-cache.capacity 试试呢

好的,我试一下

可以考虑配置 20~30GB 试试。

1 个赞

tikv所在节点的内存是多少?节点上有其他服务吗?

1 个赞

限制并发、使用小事务、控制内存使用最大参数等等都可以试一下

1 个赞

昨天配置了40g,但是经过一晚上,tikv还是突破了这个上限。


物理节点96g,节点上有k8s部署的其他服务

这些试试

memory-usage-limit = "40G"

[server]
grpc-memory-pool-quota = "1G"
[storage.block-cache]
capacity = "30GB"
[rocksdb]
max-total-wal-size = "2GB"
enable-statistics = false
[rocksdb.defaultcf]
write-buffer-size = "512MB"
max-write-buffer-number = 5
[rocksdb.writecf]
write-buffer-size = "512MB"
max-write-buffer-number = 5
[rocksdb.lockcf]
write-buffer-size = "512MB"
max-write-buffer-number = 5
[raftdb.defaultcf]
write-buffer-size = "128MB"
max-write-buffer-number = 5
[raft-engine]
memory-limit = "512MB"

节点内存使用情况正常吗

好的,我试一下

挺正常的,就是tikv这个pod总是缓慢增长,最后oom

查找你持续增长的原因。应该是有些操作没释放。如果一直增长,最后肯定是OOM了啊。内存毕竟有限。

storage.block-cache.capacity这个值设置为你认为tikv能占用的内存总量的45%,假如你96G物理机只跑tikv,设置40G我认为问题不大,但是如果上面跑的其他pod很多,建议设置再小一点。。。

突破很正常,这个配置推荐配置为你给 pod 的 limit mem 配置的 45% 左右,你给 40 肯定超。
这个是主要内存占用,tikv 还有其他内存占用。有一些 cache 和 gRpc 等通讯使用的内存占用。

tikv 如果集群写如比较多, 内存上升突破正常的, memory-usage-limit = 这个值设置为总内存的75%

share 下 kubectl -n default get tc advanced-tidb -oyaml 的输出,另外参考官网试下 (修改会滚动重启 TiKV)

  tikv:
    requests:
      cpu: "2000m"
      memory: "48Gi"
      storage: "100Gi"
    limits:
      cpu: "4000m"
      memory: "48Gi"

好的好的,我试一下,谢谢!

好的,多谢