Ignite缓存EvictionPolicy触发时机、原理及内存控制咨询
问题分析与解决方案
一、EvictionPolicy的工作原理与触发时机
你配置的LruEvictionPolicyFactory属于缓存条目级驱逐策略,核心逻辑和触发规则如下:
- 作用范围:仅控制缓存的堆内(On-Heap)条目数量,你设置的
200000是堆内允许的最大键值对数目。 - 触发时机:当堆内缓存条目数达到设定的
maxSize(20万)时,新条目插入操作会同步触发驱逐逻辑,移除最近最少被访问的条目,确保堆内条目数不超过阈值。 - 局限性:如果缓存使用了堆外内存(由DataRegion配置控制),堆外的条目不受这个策略的数量限制。
而你同时配置的DataRegion的RANDOM_LRU属于页级内存驱逐策略,它的逻辑是:
- 作用范围:针对堆外内存(Off-Heap)的使用量,当堆外内存占用达到
evictionThreshold(你设的0.9,即90%)时,后台线程会异步驱逐最近最少使用的内存页(按内存大小而非条目数计算)。
二、为什么记录数远超20万
你的配置同时启用了两套独立的驱逐机制,导致条目数不受缓存级策略限制:
- 堆外内存无条目数限制:DataRegion开启了
RANDOM_LRU页驱逐,意味着缓存数据可以溢出到堆外内存,而堆外的条目数量不受LruEvictionPolicy的20万限制,总条目数(堆内+堆外)自然会远超设定值。 - 页驱逐按内存大小触发:DataRegion的
maxSize是3GB,只有当堆外内存占用达到2.7GB(3GB*0.9)时才会触发驱逐,此时堆外可能已经存储了大量条目(取决于单条数据大小),所以总记录数会达到80万甚至更多。
三、如何控制缓存数据大小
根据你的需求,分两种场景给出解决方案:
场景1:严格控制缓存条目数量
如果需要确保缓存总条目数不超过20万,需禁用堆外内存的页驱逐,让所有数据都受缓存级LRU策略控制:
- 修改DataRegion配置,关闭页驱逐:
<bean class="org.apache.ignite.configuration.DataRegionConfiguration"> <property name="name" value="ds_name"/> <property name="initialSize" value="#{512L * 1024 * 1024}"/> <property name="maxSize" value="#{3 * 1024L * 1024 * 1024}"/> <property name="pageEvictionMode" value="DISABLED"/> <!-- 关闭页驱逐 --> <property name="evictionThreshold" value="0.9"/> <property name="metricsEnabled" value="true"/> <property name="persistenceEnabled" value="false"/> </bean>
- 确保CacheConfiguration的
evictionPolicyFactory配置不变,此时所有数据都存储在堆内,条目数会严格控制在20万以内。
注意:这种方式下需确保DataRegion的
maxSize足够容纳20万条数据,避免OOM。
场景2:控制缓存占用的内存大小(更推荐)
如果更关注内存占用而非条目数,建议依赖DataRegion的页驱逐机制,同时可保留缓存级策略作为堆内优化:
- 移除或调整Cache层面的条目级驱逐策略(可选,若需限制堆内条目数可保留):
// 若不需要堆内条目数限制,可注释此行 // cacheCfg.setEvictionPolicyFactory(new LruEvictionPolicyFactory<>(200000));
- 优化DataRegion的页驱逐配置:
- 调整
evictionThreshold:建议设为0.8~0.85,给内存预留缓冲空间,避免频繁驱逐 - 若需要更精准的内存控制,可结合
maxOffheapSize单独限制堆外内存大小
- 调整
- 开启缓存统计,监控内存使用和驱逐情况:
cacheCfg.setStatisticsEnabled(true);
通过Ignite监控工具查看缓存的内存占用、驱逐次数等指标,调整配置至最优状态。
额外注意事项
- 备份副本影响:如果缓存配置了
backups(备份数),总条目数会是主副本数 × (备份数+1),需将这个因素纳入计算。 - 驱逐异步性:DataRegion的页驱逐是后台异步执行的,可能会有短暂的内存占用超过阈值的情况,但不会持续太久。
内容的提问来源于stack exchange,提问作者段绍昌
相关产品推荐
相关产品推荐

