tikv进程运行后使用内存过多(没有任务业务使用数据库情况下)

我在官网下载了tidb-community-server软件包,版本为6.5.6。每台虚拟机上运行pd与tikv进程,共三台虚拟机组成数据库集群。每台虚拟机内存为16G,,当我启动tikv进程后,tikv进程使用1.6G内存左右,这是在没有任何应用使用数据库的情况下。我参考了官方文档tikv内存调优https://docs.pingcap.com/zh/tidb/v6.5/tune-tikv-memory-performance,修改了相关配置,但是tikv进程启动使用内存没有变化。我想咨询下,怎么限制tikv进程刚启动使用内存大小。谢谢了!

tikv配置文件

top -p 查看tikv进程,发现使用了1.6G内存

最大内存可以用 memory-usage-limit控制,没有启动内存的说法,TiDB不是JVM呀

你好,我在配置文件将 memory-usage-limit设置为了500MiB,但是没有效果。我那个启动内存说法可能有误解,我指的是没有任何业务使用数据库,只是运行tikv进程,它就使用了1.6G,我很困惑为什么没有人用,tikv运行就需要这么多内存,能不能通过什么参数限制一下。

tidb集群确实有点费内存,不过还好吧,占比不是很大。你安装时有没有优化机器系统参数,比如关闭THP(内存大页)等?

1 个赞

基于老哥的家庭条件,建议使用单机版 :thinking:
国产数据库TiDB单机部署最佳实践 - 知乎 (zhihu.com)

tidb集群官方对硬件资源的要求 测试集群配置如下 就知道占用资源较高

限制启动的内存好像意义不大吧,毕竟跑了业务之后内存还是要升上来的。
另外资源太少又是混合部署的话,tidb的性能会大打折扣的。

刚关闭了THP,tikv进程使用物理内存下降了0.1G :rofl:

有个分布式存储也准备部署在这几台机器上,存储集群的元数据存放在tikv数据库上。这个存储卖点就是占用资源少,对机器要求不高。所以部署存储的机器配置都不会很高。 我现在只是测试pd与tikv组成的数据库集群,存储都没有往这个数据库里面写数据,tikv这个占用1.5G左右不太能接受。

没办法,我要向组长说明为什么没有上层没有业务,还会使用这么多内存,不然就得看源码了,但我也不会rust :smiling_face_with_tear:

关闭THP只是其中一项,最好参考如下链接把机器的系统参数都设置一下https://docs.pingcap.com/zh/tidb/stable/check-before-deployment

老哥,你是自己测试完吗,我感觉这配置,上业务跑不起来啊

内存不用memory-usage-limit


改这个参数,我测过tikv占用内存是设置值1.25倍,不过你说的1.6G就觉得很大了不至于,tikv内存占用是很大的

我没有使用TiUP工具部署,我是下载tidb-community-server软件包,写好pd与tikv配置文件,然后启动pd与tikv进程,我的存储集群可以对接到tikv数据库集群写入数据。但现在发现哪怕不启动分布式存储集群,tikv进程使用物理内存达到了1.6G,想找下原因

你好,这个我设置了,我的配置文件截图里面有,现在就是tikv没有存储任何数据,运行起来就占这么多内存,想排查下原因。不知道是不是下图说的第1点,因为第2点不可能,我没有部署运行TiDB进程。

正常的,启动就占这么多

tidb这款数据库资源利用的这块欠缺。新版本官网已经在高这块了(嘘嘘,之前线上听他们内核这块负责人讲的的。)

占用的不多呀

tikv 控制内存的主要参数是 storage.block-cache 的 capacity。 通过在 [storage.block-cache] 下设置 capacity 参数,你可以配置该 block cache 的大小。block cache 越大,能够缓存的热点数据越多,读取数据越容易,同时占用的系统内存也越多。

用的内存不多,不用纠结。目前楼主的家底太薄,先想怎么开源,而不是节流。

进程本身运行以及内部的心跳通信等机制会消耗一定的内存的,占用1.6GB内存不算多。

你这个资源环境,估计业务跑进来可能会一些问题,尽量多测试一下。TiDB适用于海量数据的分布式存储和计算的场景,支持灵活扩展和高可用特性,这里每个字都透露着对基础硬件设施的相对高要求。

如果是单机可以满足的业务场景,可以使用单机数据库。反之,要对硬件条件做好提前预估和准备,否则跑出来的效果会达不到预期。