我想从零开始扩展 TiDB,来了解它在资源受限时的行为,比如low memory,使用磁盘而不是拒绝查询或断开连接,或者通过拒绝请求来保证高QoS。
但是,即使在没有databse的空闲状态下,TiKV 节点的内存使用似乎从 1.5GB 开始,tidb-server 则为 500MB。
想求问这个内存占用可以调节吗?(假设系统会预留一些内存用于缓存)
我在使用containers,因此理想情况下内存应该限制在containers内存限制内,而不是系统总内存的某个百分比。
我理解推荐配置是大于 32GB 内存等,但是否可以将 TiDB 调整为最低内存配置,例如 1GB?
想求问这些来用于我后续理解参数调整,例如磁盘使用、内存使用、吞吐量、请求拒绝等之间的平衡。
另外,还想求问如何知道哪些调优参数会导致内存不足?例如,即使在 32GB 下,不合适的参数设置也可能导致 OOM。
大佬们求问一下,尝试用文档里的建议调整过参数了,但是没有改变内存使用情况。加载数据集的时候还是显示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
TiDB在部署的时候是要求一定的基础资源的。
你可以先给出你可以提供的资源是多少,以及要如何部署的拓扑结构等,我们帮你分析
1 个赞
有猫万事足
2024 年11 月 17 日 09:58
7
既然是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 个赞
有猫万事足
2024 年11 月 18 日 11:40
9
1 个赞