4

JMS トピックをキャッシュするために Hazelcast を使用しています。

すべてがある程度までうまく機能します。実行時間の約 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てキャッシュを配布できないことを意味します。

ただし、奇妙なことに、構成には現在のサーバー インスタンスであるノードが 1 つしかありません。

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

私はそれを設定するために春を使用しています:

<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()メソッドは、SpringHazelcastInstanceを介して注入されたものを返します (上記の構成のもの、Bean ID を確認しましたが、問題ないようです)。


更新 2。

プログラムで追加されたマップには最大サイズがあります。

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

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

mapConfig.getMaxSizeConfig().setSize(val);

val25000 未満にすることはできません

ただし、サイズ構成なしで試してみましたが、それでも警告が表示されます。

map.values(SqlPredicate(""))また、日付で値を取得するために使用します。

4

1 に答える 1

5

max-sizeマップに が定義されている場合、putマップが に到達した後の操作は、マップ サイズが max-size を下回るまでサイクルに入り、新しいエントリを挿入できるようになりますmax-sizeredo

マップから何らかの値を削除するか、そのマップに対してある種のエビクションを定義する必要があります。つまり、次の 1 つ以上を定義できます。

  • eviction-policyとを設定するeviction-percentage
  • 設定するtime-to-live-seconds
  • 設定するmax-idle-seconds

詳細については、Hazelcast Map Evictionを参照してください。

于 2012-07-19T11:10:42.443 に答える