编程语言
首页 > 编程语言> > java – 为什么会出现这些Hazelcast警告?

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

作者:互联网

我正在使用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()方法通过spring返回注入的HazelcastInstance(在上面的配置中,我检查了bean id,看起来没问题).

更新2.

以编程方式添加地图上的最大大小:

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

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

mapConfig.getMaxSizeConfig().setSize(val);

val不能低于25000

我尝试过没有大小配置,但我仍然收到警告.

我还使用map.values(SqlPredicate(“”))来按日期获取值.

解决方法:

如果为地图定义了max-size,则在map到达max-size之后的put操作将进入重做循环,直到map size减小到max-size以便能够插入新条目.

您应该从地图中删除一些值,或者您应该为该地图定义某种类型的驱逐.我的意思是你可以定义一个或多个以下内容;

>设定驱逐政策和逐出百分比
>设置生存时间秒
>设置最大空闲秒数

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

标签:java,spring,tomcat,hazelcast
来源: https://codeday.me/bug/20190620/1248783.html