gpt4 book ai didi

java - Oracle Coherence 驱逐不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 12:37:51 25 4
gpt4 key购买 nike

我正在致力于实现 Oracle Coherence 复制缓存。实现如下:

<?xml version="1.0"?>
<!DOCTYPE cache-config SYSTEM "cache-config.dtd">

<cache-config>

<caching-scheme-mapping>
<cache-mapping>
<cache-name>EntryList</cache-name>
<scheme-name>ENTRY_ITEMS</scheme-name>
</cache-mapping>
</caching-scheme-mapping>

<caching-schemes>
<replicated-scheme>
<scheme-name>ENTRY_ITEMS</scheme-name>
<backing-map-scheme>
<local-scheme>
<scheme-name>ENTRY_ITEMS</scheme-name>
<unit-calculator>FIXED</unit-calculator>
<expiry-delay>60m</expiry-delay> <!-- expire after 60 minutes -->
<high-units>2000</high-units>
<eviction-policy>LFU</eviction-policy>
</local-scheme>
</backing-map-scheme>
<autostart>true</autostart>
</replicated-scheme>
</caching-schemes>
</cache-config>

tangasol-coherence-override.xml

<coherence xmlns:xsi="http://www.w4.org/2001/XMLSchema-instance"
xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config"
xsi:schemaLocation="http://xmlns.oracle.com/coherence/coherence-operational-config
coherence-operational-config.xsd">

<cluster-config>
<member-identity>
<cluster-name>clusterName</cluster-name>
<!-- Name of the first member of the cluster -->
<role-name>RoleName</role-name>
</member-identity>
<unicast-listener xml-override=coherence-environment.xml/>
</cluster-config>

</coherence>

coherence-environment.xml

<unicast-listener xmlns:xsi="http://www.w4.org/2001/XMLSchema-instance"
xmlns="http://xmlns.oracle.com/coherence/coherence-operational-config"
xsi:schemaLocation="http://xmlns.oracle.com/coherence/coherence-operational-config
coherence-operational-config.xsd">

<well-known-addresses>
<socket-address id="1">
<address>member1</address>
<port>7777</port>
</socket-address>
</well-known-addresses>

<well-known-addresses>
<socket-address id="2">
<address>member2</address>
<port>7777</port>
</socket-address>
</well-known-addresses>
</unicast-listener>

这已经实现并经过测试,可以完美运行。

我们正在测试缓存的逐出策略。为了简化测试,我执行了以下操作:

  1. 我通过将高单位设置为 4,将缓存大小保持为 4。现在在缓存中添加 4 个条目。这应该完全填满缓存。
  2. 现在,如果我在缓存中再创建一个 5 号条目,我预计租用频繁使用的条目会被从缓存中踢出,以便为 5 号条目腾出空间。
  3. 下次我访问新条目编号 5 的缓存时,我应该获得缓存命中。
  4. 但这并没有发生,我总是遇到缓存 MISS。
  5. 我在 Debug模式下运行了 Java 代码,我看到代码 PUT 的条目号 5 在缓存中,但此 PUT 操作不会反射(reflect)在缓存中。

现在我绝对不是第一个测试一致性缓存驱逐策略的人。我在配置中遗漏了什么吗?我是否以错误的方式测试驱逐?欢迎任何意见。

谢谢。

最佳答案

尝试隔离问题:

  • 更改<expiry-delay>1</expiry-delay> (1毫秒)
  • 添加<low-units>0</low-units> (默认值为 75%,即 3 个条目)。
  • 尝试其他政策 <eviction-policy>LRU</eviction-policy>

如果这些没有帮助,请尝试添加自定义驱逐策略类以查看是否触发驱逐。请参阅here :

关于java - Oracle Coherence 驱逐不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37125630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com