内存调优问题

我想从零开始扩展 TiDB,来了解它在资源受限时的行为,比如low memory,使用磁盘而不是拒绝查询或断开连接,或者通过拒绝请求来保证高QoS。

但是,即使在没有databse的空闲状态下,TiKV 节点的内存使用似乎从 1.5GB 开始,tidb-server 则为 500MB。
想求问这个内存占用可以调节吗?(假设系统会预留一些内存用于缓存)

我在使用containers,因此理想情况下内存应该限制在containers内存限制内,而不是系统总内存的某个百分比。

我理解推荐配置是大于 32GB 内存等,但是否可以将 TiDB 调整为最低内存配置,例如 1GB?

想求问这些来用于我后续理解参数调整,例如磁盘使用、内存使用、吞吐量、请求拒绝等之间的平衡。

另外,还想求问如何知道哪些调优参数会导致内存不足?例如,即使在 32GB 下,不合适的参数设置也可能导致 OOM。

数据库还是别跑containers里面吧

参考:
https://docs.pingcap.com/zh/tidb/stable/tune-tikv-memory-performance
https://docs.pingcap.com/zh/tidb/stable/configure-memory-usage

2 个赞

大佬们求问一下,尝试用文档里的建议调整过参数了,但是没有改变内存使用情况。加载数据集的时候还是显示OOM TiDB using >1G and TiKV using >3G。想求问一下大佬们是我忽略了那些参数吗?
tikv:

memory-usage-limit = "500MB"

[storage.block-cache]
capacity = "128MB"

[rocksdb]
max-background-jobs = 2
max-open-files = 100
max-total-wal-size = "300MB"
write-buffer-limit = "100MB"

tidb:

in-mem-slow-query-recent-num = 50

[performance]
# must be integer
server-memory-quota = 300000000


[tikv-client.copr-cache]
# The capacity in MB of the cache
capacity-mb = 100.0

[instance]
max_connections = 1000

先上个版本号,不同的版本之间的参数有很大的差距了

1 个赞

TiDB在部署的时候是要求一定的基础资源的。
你可以先给出你可以提供的资源是多少,以及要如何部署的拓扑结构等,我们帮你分析

1 个赞

既然是OOM了,你就弄个dump出来,看看这500MB里面是什么。我怀疑可能不是buff这类的,代码需要的内存就占了几百兆,你调的这些参数还没到上限就超过500MB了。

另外里面有几个参数现在还是实验特性,就比如

rocksdb.write-buffer-limit

不如去cf上调,另外这个writecf和defaultcf上,这个write-buffer的个数都是5个

单独调cf上的block-cache和write buffer 我在4c8g调过是确实有用的。你给的太极限了,1g-3g。我是真觉得有点悬,起码要通过dump看看代码这块到底占了多少,才好估算。

tikv分配1GB太少了,之前我在物理机环境下配置tikv,1GB起库后不断的报错。container也是类似的,会有其他的一下日志缓存等消耗。

2 个赞

我也觉的是,他给的条件太苛刻了。

https://docs.pingcap.com/zh/tidb/stable/hardware-and-software-requirements#开发及测试环境

比要求的开发测试环境的配置低很多。都不是腰斩,是膝盖斩了。

1 个赞

好的我再看看,谢谢大佬!