You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hazelcast Near Cache频繁失效问题排查咨询

Hazelcast Near Cache 频繁失效问题排查

用户配置代码

驱逐配置与Near Cache配置

EvictionConfig evictionConfig = new EvictionConfig()
        .setEvictionPolicy(EvictionPolicy.NONE)
        .setSize(1_000_000)
        .setMaxSizePolicy(MaxSizePolicy.ENTRY_COUNT);

NearCacheConfig nearCacheConfig = new NearCacheConfig().setInMemoryFormat(InMemoryFormat.OBJECT)
        .setInvalidateOnChange(true)
        .setSerializeKeys(true)
        .setEvictionConfig(evictionConfig)
        .setCacheLocalEntries(true);

IMap配置

config.getMapConfig(Constants.CacheNames.EMPLOYEE_CACHE).setReadBackupData(true).setNearCacheConfig(new NearCacheConfig(nearCacheConfig));

问题描述

仅存储50条数据的情况下,该IMap仍频繁触发大量Near Cache失效事件,无法定位配置问题,请求排查。

排查要点

  • 检查setCacheLocalEntries(true)的影响:启用该配置后,本地节点的读写操作也会触发Near Cache失效。如果业务中对本地节点的该Map存在频繁更新(哪怕是同一Key的重复更新),都会生成失效事件。建议临时关闭该配置,观察失效事件是否减少,验证是否由该配置导致。
  • 确认ReadBackupData(true)的场景:开启读取备份数据后,节点可能从备份分区读取数据。当备份数据所在节点的原分区数据更新时,可能额外触发失效事件。确认集群备份节点数量及读写请求路由逻辑,排查是否存在大量跨节点读操作触发的备份数据同步失效。
  • 验证Key序列化一致性:尽管配置了setSerializeKeys(true),需确保所有节点使用相同的Key序列化实现。若Key在不同节点序列化后不一致,会导致Near Cache误判为不同Key,进而触发不必要的失效或重复缓存,间接增加失效事件。
  • 排查批量操作或Entry Processor:批量更新、删除操作,或使用Entry Processor修改Map数据,哪怕操作Key数量少,也可能触发批量失效事件。检查业务代码中是否存在这类高频操作。
  • 确认Eviction配置实际生效:虽设置EvictionPolicy.NONE,但需检查Hazelcast版本是否存在配置兼容问题,是否有隐式驱逐逻辑(如内存压力触发的紧急驱逐)。通过Hazelcast监控工具查看Near Cache实际条目数和驱逐统计,确认是否存在意外驱逐导致的失效。
  • 检查集群节点状态:若集群中有节点频繁重启、分区迁移,会触发大量Near Cache失效事件。查看集群日志,确认是否存在节点上下线、分区重平衡情况。

内容的提问来源于stack exchange,提问作者Scientist

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 03:01:06