Hazelcast赶出休眠第二级缓存太快

时间:2019-02-11 20:54:39

标签: hibernate hazelcast

我正在使用Hazelcast作为Hibernate的二级缓存提供程序。我看到的是,无论hazelcast.xml中的设置如何,缓存条目每60秒就会被清除一次。

我的hazelcast.xml配置:

<map name="default">
    <in-memory-format>BINARY</in-memory-format>
    <backup-count>1</backup-count>
    <async-backup-count>0</async-backup-count>
    <time-to-live-seconds>21600</time-to-live-seconds>
    <max-idle-seconds>1800</max-idle-seconds>
    <eviction-policy>NONE</eviction-policy>
    <max-size policy="PER_NODE">10000</max-size>
    <eviction-percentage>25</eviction-percentage>
    <min-eviction-check-millis>100</min-eviction-check-millis>
    <merge-policy>com.hazelcast.map.merge.PutIfAbsentMapMergePolicy</merge-policy>
    <cache-deserialized-values>INDEX-ONLY</cache-deserialized-values>
    <statistics-enabled>true</statistics-enabled>
</map>
<map name="*.Member">
    <in-memory-format>BINARY</in-memory-format>
    <backup-count>0</backup-count>
    <async-backup-count>0</async-backup-count>
    <time-to-live-seconds>21600</time-to-live-seconds>
    <max-idle-seconds>1800</max-idle-seconds>
    <eviction-policy>LFU</eviction-policy>
    <max-size policy="PER_NODE">4000</max-size>
    <statistics-enabled>true</statistics-enabled>
</map>

我的hibernate.cache.region.factory_class设置为HazelcastLocalCacheRegionFactory

通过打开所有我可以找到的日志记录,我可以看到第一个发布SQL的事务加载了Member对象。后续事务不发出SQL;而是按预期在第二级缓存中找到对象。但是,在60秒后,将报告缓存丢失(即使空闲时间为1800秒)。通过每5秒发送一次相同的请求并查看日志,我可以看到这一点-60秒后,我看到发出了重新加载项目的新SQL。 Hibernate或Hazelcast从来没有任何迹象表明这些对象正在被驱逐。

我还尝试从地图名称中删除通配符,并使用FQCN。

记录器是

<logger name="org.hibernate.sql" level="DEBUG" />
<logger name="org.hibernate.jdbc" level="DEBUG" />
<logger name="org.hibernate.cache" level="DEBUG" />
<logger name="org.hibernate.event" level="TRACE" />
<logger name="com.hazelcast" level="TRACE" />

我正在使用

  • Spring Boot 2.1.1
  • 休眠5.3.7
  • Hazelcast 3.11
  • hazelcast-hibernate53 3.1.0

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。每60秒CleanupServicecleanup中运行LocalRegionCache,将ttl> 0的条目从缓存中删除。

可能是hazelcast-hibernate53中的错误。我将其报告为issue

编辑: 这是一个错误。它已在hazelcast-hibernate5 1.3.2中修复。