【问题标题】:Infinispan Eviction StrategyInfinispan 驱逐策略
【发布时间】:2025-12-18 20:45:01
【问题描述】:

我的 eviction max-entry 为 2000,策略为 LRIS。但是驱逐在达到 2000 的上限之前就开始了。所以,我的问题是这里是否存在某种内存限制导致这种驱逐策略起作用?如果是,它是如何以及在哪里指定的?

目前,我已将驱逐策略更改为 NONE。

任何帮助将不胜感激。

【问题讨论】:

    标签: infinispan


    【解决方案1】:

    Infinispan 尚未提供任何基于内存的驱逐。

    Infinispan 使用并发散列映射,将散列空间分割成段(也称为存储桶),每个段独立地逐出它拥有的条目。

    因此,当您在内部设置maxEntries=2000 时,并发哈希映射正在创建容量为maxEntries/numberSegments 的段。当一个段已满时,将在该段中触发驱逐并删除一个条目。

    在您的情况下,在您达到 2000 个条目之前,某些段很快就满了。

    您可以尝试以下方法:

    • 增加并发级别(在<locking concurrencyLevel="yyy">,默认16)。段数随着并发级别的增加而增加
    • 尝试实现更好的hashCode() 函数,以更好地传播它们的键。

    干杯。

    【讨论】:

    • 我读到了缓存的“段”属性,其文档说:“哈希空间段数(每个集群)。推荐值为 10 * 集群大小。”另外,你说增加并发级别会增加段数。这两个有区别吗?它们各自的意义是什么?