storage.block-cache.capacity设置为8GB,你一个tikv最多能用16GB内存,一个机器部署两个节点也就能用32gb,加上1个pd,一个tidb,不应该占这么高的内存使用率吧,你看进程里面pd和tidb还有tikv各占用的内存,直接登陆机器top一下看看
就只有tikv占用高
嗯,那你这内存占用率也没有太高啊,2个tikv各占30%,tidb和pd加起来占10%,一共70%,系统内存使用率70%,算是合理的吧。。。tikvoom过吗?应该还是正常用着吧,只是内存占用率稍微高一点,这个风险主要是就是tidb高峰有可能内存占用飙升,建议tidb和pd部署在一起,tikv还是拆开部署吧。。。
如果你嫌tikv占用内存高的话,可以将storage.block-cache.capacity再设置小一点,例如6GB,每个tikv占用内存大概是这个值的2.25倍左右。
没,预算有限,才混合部署在一起的,单个机器64g内存,平时都是75%内存占用量
正常情况不该占用这么多吧?storage.block-cache.capacity我设置8GB,那么单个tikv节点也应该是8GB左右吧,现在差距较大,不知道是哪里内存占用的呢
storage.block-cache.capacity这个不是整个tikv的内存使用阈值,而是存共享数据用的(你可以理解为oracle的buffer cache),其他tikv组件用的内存还得大概这个阈值的1.2倍,所以这个值的2.2倍才应该是你单个tikv的内存上限
但是这个图中的第一个tikv的进程已经超过了2.2倍呢,我疑惑的是cpu不进行计算或者计算量很小内存还是占用这么高,有点奇怪呢。
如果现在集群很空闲,这个内存使用率确实有点高,storage.block-cache.capacity这个对应的内存基本只要升上来了,是不会回收的,只会反复利用,但是tikv的其他组件的内存占用率应该是随着业务的繁忙程度而变化的(有一定的基础值,也就是即使你的系统什么负载都没有,tikv组件还是要占用一定的内存。)
我上次重启过一次,内存降下来了,经过不到一个月的时间,内存占用率又上升到了75%以上了。很奇怪了。
再看下你的集群拓扑,我觉得有点不合理,我建议还不如直接整两台(32G内存)做pd+tidb,剩下三台(64G内存)做tikv(其中调一台再放个pd),如果你64G内存那三台机器上有两块硬盘的话,确实可以各部署两个tikv且做numa资源隔离,如果没有的话,还不如每台一个tikv节点,内存拉满就行。。。
我是这样配置的没问题吧?
没问题
怀疑有问题,可以考虑抓个 pprof 看看,分析下
大佬,为什么每个tikv占用内存大概是 storage.block-cache.capacity的2.2倍?
官方文档建议storage.block-cache.capacity=物理内存45%
memory-usage-limit=block-cache0.75/0.45 限制 TiKV 内部各个组件的内存使用(这个包括storage.block-cache.capacity吧? ) ,剩余 25% 的内存用于操作系统的页缓存
5.3才开始有 memory-usage-limit对整个tikv的内存使用进行限制,你是5.1吧,那个版本tikv占用内存更多一点
混合节点能存高不是很正常么?尤其TIDB节点和TIKV节点在一起,本来tidb节点就是计算节点不保存任何数据到存储,大部分运行都在内存层
我是 V6.5.1 ,虚拟机上部署的