Ignite通过隐秘非堆数据避免重平衡:特性名称、文档及配置咨询
关于Ignite非堆内存留存与免重平衡现象的解答
特性名称
该特性为Ignite备份页留存(Backup Page Retention)机制,是重平衡流程的优化特性,用于避免节点反复故障时重复触发全量重平衡,提升集群故障恢复的效率。
文档查阅位置
在Ignite官方文档的以下核心章节可找到相关说明:
- 数据网格 > 缓存重平衡 > 高级重平衡配置:详细描述重平衡过程中备份数据的留存策略与触发逻辑
- 内存管理 > 非堆内存管理:解释非堆内存页面的标记规则(活跃/非活跃页面),以及
OffHeapEntriesCount(仅统计活跃缓存条目)与OffheapUsedSize(统计所有已分配非堆页面)的统计差异
是否支持配置
该机制支持灵活配置,核心调整参数如下:
CacheConfiguration.setRebalanceRetainBackupPages(boolean):控制节点恢复后是否保留已生成的备份页,默认开启此优化PageMemoryConfiguration.setPageEvictionThreshold(double):设置非堆内存的驱逐阈值,当内存占用超过阈值时,自动回收非活跃的留存页面- 配合缓存的
EvictionPolicy(如LruEvictionPolicy),可进一步管控非堆内存页面的留存时长与回收优先级
现象对应逻辑
结合你的复现步骤,该机制的运行逻辑可拆解为:
- 首次N1故障时,N2、N3触发重平衡接收备份数据,非堆内存分配新页面存储这些活跃备份数据,因此
CacheSize、OffheapUsedSize、OffHeapEntriesCount同步上升 - N1恢复后,N2、N3中的原备份数据转为非活跃状态(不再作为集群的有效备份),因此
CacheSize、OffHeapEntriesCount回落,但非堆页面并未立即释放(留存为预备备份),导致OffheapUsedSize维持高位 - 再次关闭N1时,N2、N3直接激活留存的非活跃页面,无需从其他节点拉取数据,因此
TotalRebalancedBytes无变化,OffHeapEntriesCount也无需新增 - 重启N2、N3后,留存的非活跃页面被清空,因此再次故障时需触发全量重平衡,指标变化与首次故障一致
内容的提问来源于stack exchange,提问作者kkolyan
相关产品推荐
相关产品推荐

