【问题标题】:Hazelcast 3.4 'max-size' attribute of hazelcast IMap is not working correctlyHazelcast IMap 的 Hazelcast 3.4 'max-size' 属性无法正常工作
【发布时间】:2015-11-04 12:26:17
【问题描述】:

我正在使用hazelcast-spring-3.1.xsd。我的 hazelcast 地图配置如下。

<hz:map name="defaultMap"
                    backup-count="1"
                    max-size="5000"
                    max-size-policy = "PER_NODE"
                    eviction-percentage="50"
                    read-backup-data="true"    
                    eviction-policy="LRU"
                    merge-policy=
                        "com.hazelcast.map.merge.LatestUpdateMapMergePolicy"
                    time-to-live-seconds="0"
                >

我已经给了max-size = 5000。我有 12000 条记录,如果我插入 defaultMap 正在加载 12000 条记录。我在这里很困惑,它如何加载比实际大小5000更多的数据。我在插入 12000 条数据记录时也没有例外。

还有一件事,它的驱逐配置也不起作用。如果缓存达到其最大大小限制,我想将其逐出 50%。

任何人都可以帮助我吗?它非常紧急。我错过了什么?

【问题讨论】:

  • 请检查 ttl,您已将 ttl 设置为 0 意味着无限时间意味着没有过期策略,还要检查 max-idle-seconds 属性。

标签: spring hazelcast max-size


【解决方案1】:

LFU:最不常用 LRU:最近最少使用 无:无 随机:随机 我想你会使用 LRU 而不是 LFU..

【讨论】:

    【解决方案2】:

    您可以使用此属性来解决您的问题:

    eviction-policy="LFU"
    

    【讨论】:

    • OP 表示,“但是我新添加的条目被驱逐而不是旧条目。会出现什么问题?”您为什么会建议将最不常用的条目逐出作为解决方案的策略?
    【解决方案3】:

    您有max-size-policy = "PER_NODE" 设置,这意味着每个 Hazelcast 实例中的最大地图条目数,而不是整个 Hazelcast 集群(或整个地图)。

    在 Hazelcast 2.x 版本中,max-size eviction 策略的默认值为 cluster_wide_map_size。在 3.x 版本中,它被替换为 PER_NODE

    还有其他设置。详细的地图驱逐设置和示例,可以查看this out。

    【讨论】:

    • 感谢您的帮助。我已经浏览了文档。我正在使用 eviction-policy="LRU" 这意味着在达到“最大大小”限制后,最近最少使用的条目将被从缓存中逐出。但是我新添加的条目被驱逐而不是旧条目。会是什么问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-23
    • 2012-12-23
    • 1970-01-01
    • 1970-01-01
    • 2022-11-15
    • 2021-06-27
    • 1970-01-01
    相关资源
    最近更新 更多