gpt4 book ai didi

java - 为什么会出现这些 Hazelcast 警告?

转载 作者:搜寻专家 更新时间:2023-11-01 02:30:08 24 4
gpt4 key购买 nike

我正在使用 Hazelcast 来缓存 JMS 主题。

在某种程度上一切都很好。在大约 30-40 分钟的运行时间后,我开始得到:

WARNING: [192.168.3.102]:5701 [devGroup] RedoLog{key=Data{partitionHash=-1465305045} size= 10, operation=CONCURRENT_MAP_PUT_IF_ABSENT, target=Address[192.168.3.102]:5701, targetConnected=false, redoCount=910, migrating=null
partition=Partition [186]{
0:Address[192.168.3.102]:5701
}
}

据我阅读开发论坛的了解,这些是重做警告,意味着 Hazelcast 无法连接到指定实例 target=Address[192.168.3.102]:5701分发缓存。

但奇怪的是我的配置只有一个节点,即当前服务器实例:

INFO: [192.168.3.102]:5701 [devGroup] 
Members [1] {
Member [192.168.3.102]:5701 this
}

我正在使用 spring 来配置它:

<hz:hazelcast id="hazelcastInstance">
<hz:config>
<hz:group
name="devGroup"
password="pass"/>
<hz:properties>
<hz:property name="hazelcast.merge.first.run.delay.seconds">5</hz:property>
<hz:property name="hazelcast.merge.next.run.delay.seconds">5</hz:property>
</hz:properties>
<hz:network port="5701" port-auto-increment="true">
<hz:join>
<hz:multicast enabled="false" />
<hz:tcp-ip enabled="true">
<hz:members>192.168.3.102</hz:members>
</hz:tcp-ip>
</hz:join>
<hz:symmetric-encryption enabled="true"
algorithm="PBEWithMD5AndDES"
salt="thesalt"
password="thepass"
iteration-count="19"/>
<hz:asymmetric-encryption enabled="false"
key-password="thekeypass"
key-alias="local"
store-type="JKS"
store-password="thestorepass"
store-path="keystore"/>
</hz:network>
</hz:config>
</hz:hazelcast>

我正在使用 Hazelcast 2.1、Spring 3.1 和 Tomcat 7

那么有人知道我为什么会收到警告吗?

谢谢,


回答评论:

我是这样使用的:

final ConcurrentMap<K, V> cachedMap = getHazelcast().getMap(region);
cachedMap.putIfAbsent(key, value);

getHazelcast()方法返回注入(inject)的 HazelcastInstance通过 spring(上面配置中的那个,我已经检查了 bean id,它似乎没问题)。


更新 2.

map 上有一个以编程方式添加的最大尺寸:

final MapConfig mapConfig = hazelcast.getConfig().getMapConfig(region);

.... val is calculated here ....

mapConfig.getMaxSizeConfig().setSize(val);

val不能低于25000

我尝试过不使用尺寸配置,但仍然收到警告。

我也用map.values(SqlPredicate(""))按日期获取值。

最佳答案

如果为 map 定义了max-size,则 map 达到max-size后的put操作将进入redo 循环,直到 map 大小减小到最大大小以下,以便能够插入新条目。

您应该从 map 中删除一些值,或者您应该为该 map 定义某种驱逐。我的意思是您可以定义以下一项或多项;

  • 设置eviction-policyeviction-percentage
  • 设置一个time-to-live-seconds
  • 设置一个max-idle-seconds

有关详细信息,请参阅 Hazelcast Map Eviction

关于java - 为什么会出现这些 Hazelcast 警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11541173/

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