老鹰506
(Ti D Ber Uhzt Tfx J)
21
我查下了实际我们使用的storage.engine是 raft-kv,不是partitioned-rafe-kv.
所以我的疑问还是存在 
1、storage.block-cache.capacity 和 memory-usage-limit 同时设置了,memory-usage-limit 就不生效了吗? 如果storage.block-cache.capacity 稍微偏大些(但也小于 memory-usage-limit) 就会导致 TiKV内存使用超过memory-usage-limit 的设置吗?
2、我是一个主机部署一个TiKV实例,所以TiKV最大内存也不是这里的 5/3block-cache.capacity*
3、这里的2.25 是怎么估算出来的,如果storage.engine是 raft-kv,是不是和这里的2.25没有任何关系呢?
我的TiKV节点配置是8C16G的,出现了 TiKV实例内存超过 memory-usage-limit 了,但是另外一个集群TiKV节点配置 16核 32GB的,采用的默认值,就没有出现超 memory-usage-limit 的情况。
都是官方建议,为何配置低的出现了这个问题,
diwing
(Ti D Ber R Qstj35v)
22
以system=8g, block-cache=3.6g, memory-usage-limit=6g, page-cache=2g为例计算:
1.3.6 *2.25=8.1 这里大致等于总内存8g 这就解决了你第三个疑问
2.5/3 *3.6=6 符合memory-usage-limit=6g参数值
3.你监控看到的95%是总内存system,总内存8g=memory-usage-limit+page-cache,这里可变量是 page-cache,page-cache内存使用不固定,从而让你感觉 memory-usage-limit没生效
4.page-cache=2g 这个意思是page-cache最大只有2g可以使用,因为超过2g就oom了。如果存储引擎为partitioned-raft-kv,page-cache肯定会超过2g,又不能oom的情况下只能调整block-cache
对于这类操作,有没有工具可以在线回收的?生产环境不能停机
老鹰506
(Ti D Ber Uhzt Tfx J)
25
1、你这么解释我对2.25的来源算是知晓了。
2、memory-usage-limit这个参数应该是 : 系统内存的75%默认, 8*0.75=6
3、总内存8g=memory-usage-limit+page-cache,这个也认可。
但是目前还是有两个核心疑问
1、memory-usage-limit 配置 12295013375B, 结合监控的单位是 GiB (1024换算)
12295013375B=11.45GiB ,但是实际监控显示最大到12.5GiB了 (如果是按1000换算最大是12.29倒是没有超过)
+------+---------------------+--------------------+--------------+
| Type | Instance | Name | Value |
+------+---------------------+--------------------+--------------+
| tikv | 172.31.9.37:20160 | memory-usage-limit | 12295013375B |
2、第二个问题基于第一个问题, 如果是按1024换算 12.5> 11.45超了的情况来说,为什么超limit了,大家都说是因为capacity .
但是我的理解是 capacity是包含在 limit里面的,因为官方对limit的定义是tikv实例的最大内存。
capacity 配置的值确实是小于 limit的,但是为何要 capacity最大为何会使用到2.25倍,不应该是配置多少用多少吗?
limit+page-cache是系统总内存,如果只考虑capacity的话,那我的8C16G来算, 总内存16G-page-cache 4G= 12G, 也就是limit,capacity总使用是不能超过limit的, 那么最大的倍数应该是 12/7.2=1.67
不知道有没有人和我一样的理解
老鹰506
(Ti D Ber Uhzt Tfx J)
26
你是说减少TiKV主机的内存使用吗? 调小capacity 确实达到了减少主机系统内存的使用情况
就是通过SQL语句,获取数据库占用的总内存,以及内存的分布?是缓存执行计划呢?还是缓存在数据等等。有么有语句一键回收一些内存的
多个内存数值(Dashboard heap、top、Zabbix、TiDB 监控)其实是不同维度的统计
新增节点内存低、旧节点高,是因为 Region 未自动均衡,旧节点承载更多热点 / 数据量,内存压力集中.增强型 SSD 虽性能好,但云服务器的内存隔离性略差,系统层面的内存开销比物理机高
suyh1988
(Ti D Ber Cte Vr F8 O)
36
参考最佳实践文档试试看。tikv内存是比较稳的。tidb-server容易受到大查询的影响
纯白镇的小智
(Ti D Ber Qm Qja01 M)
37
升级 TiKV 到 7.5.4+官方已修复部分内存泄漏问题