我们在coherence-cache-config.xml中配置了几个缓存。例如,
<cache-mapping>
<cache-name>Cache1</cache-name>
<scheme-name>Cache-Scheme1</scheme-name>
</cache-mapping>
<cache-mapping>
<cache-name>Cache2</cache-name>
<scheme-name>Cache-Scheme2</scheme-name>
</cache-mapping>
<cache-mapping>
<cache-name>Cache3</cache-name>
<scheme-name>Cache-Scheme3</scheme-name>
</cache-mapping>
每个节点有1 GB,群集中有4个节点。每个缓存都使用自己的服务。
<distributed-scheme>
<scheme-name>cache-scheme_1</scheme-name>
<service-name>BaseCacheService1</service-name>
<thread-count system-property="tangosol.coherence.base.threads">2</thread-count>
<guardian-timeout>30m</guardian-timeout>
<backing-map-scheme>
<local-scheme>
<scheme-ref>cache-local</scheme-ref>
</local-scheme>
</backing-map-scheme>
<autostart>true</autostart>
</distributed-scheme>
问题:
1.默认情况下,每个缓存/服务在1GB总内存中占用多少内存?据我所知,核心流程的一致性可以使用1/3的内存。因此,剩余的600MB需要分布在缓存中。
如果缓存中没有放置任何对象,Coherence Cache默认使用任何内存吗?
我们在其中一个缓存中看到了outofmemory错误。当缓存达到最大内存时,基于驱逐策略数据将被驱逐。我认为,当驱逐出现时,不应该发生外存。请让我知道为什么会发生内存错误。
此致 哈
答案 0 :(得分:1)
在您分配给Coherence Node的总堆大小中,1/3用于与索引等相关的一致性内容(如您所提到的核心服务),1/3将保存实际数据,1/3将转到节点持有的备份数据(假设您只进行了单个复制)。因此,您可以有效地仅使用340 MB的堆大小来存储不是600 MB的数据。