2017-09-09 9 views
0

Jgroupクラスタリングで状態転送のタイムアウトを指定するにはどうすればよいですか?jgroupレプリケートされたハッシュマップで状態転送のタイムアウトを与えるには?

public static ReplicatedHashMap<Integer, BaseSeatLayout> _baseSeatLayoutCache; 
JChannel baseRouteCache = new JChannel(props); 
baseRouteCache.connect("Master-Cluster"); 
client.startBaseRouteCache(baseRouteCache); 
_baseSeatLayoutCache = new ReplicatedHashMap<>(channel); 
_baseSeatLayoutCache.addNotifier(this); 
_baseSeatLayoutCache.start(10000); 
loadData()// This will load around 2 millions entry 

同じコードが、私はloaddataの()せずに、スレーブ機(またはマシン2)上で実行していますが、私はそのコードを実行すると10000msが経過しているように私は状態のタイムアウト例外の例外を取得していますし、唯一のいくつかの部分データを取得しています複製された。初期状態転送のタイムアウトを変更するにはどうすればよいですか?私tcp.xmlは以下の通りである私は、TCPプロトコルを使用しています

は、

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns="urn:org:jgroups" 
     xsi:schemaLocation="urn:org:jgroups http://www.jgroups.org/schema/jgroups.xsd"> 
    <TCP bind_port="7800" 
     recv_buf_size="${tcp.recv_buf_size:130k}" 
     send_buf_size="${tcp.send_buf_size:130k}" 
     max_bundle_size="64K" 
     sock_conn_timeout="300" 

     thread_pool.min_threads="0" 
     thread_pool.max_threads="20" 
     thread_pool.keep_alive_time="30000"/> 

    <TCPPING async_discovery="true" 
      initial_hosts="${jgroups.tcpping.initial_hosts:10.120.19.145[7800],localhost[7801]}" 
      port_range="2" /> 
    <MERGE3 min_interval="10000" 
      max_interval="30000"/> 
    <FD_SOCK/> 
    <FD timeout="3000" max_tries="3" /> 
    <VERIFY_SUSPECT timeout="1500" /> 
    <BARRIER /> 
    <pbcast.NAKACK2 use_mcast_xmit="false" 
        discard_delivered_msgs="true"/> 
    <UNICAST3 /> 
    <pbcast.STABLE desired_avg_gossip="50000" 
        max_bytes="4M"/> 
    <pbcast.GMS print_local_addr="true" join_timeout="2000" 
       view_bundling="true"/> 
    <MFC max_credits="2M" 
     min_threshold="0.4"/> 
    <FRAG2 frag_size="60K" /> 

    <pbcast.STATE_TRANSFER/> 
</config> 

答えて

1

_baseSeatLayoutCache.start(10000)

10000 MSがタイムアウトです。それを増やすか、0に設定して、完全な状態が転送されるまで待ちます。

+0

ReplicatedHashMapで10GBのデータを転送することは可能ですか? –

+0

はい。しかし、これは、すべてのメンバーが、キャッシュ内の「10 * N GB」のデータをキャッシュ内に持つ必要があることを意味します。ここで、「N」はキャッシュ内のメンバーの数です。代わりに_replicated_ 1ではなく_distributed_キャッシュを使用します。データはすべてのメンバーにコピーされるのではなく、サブセットのみにコピーされます。 'ReplCache'はJGroupsのサンプル(おもちゃ)です。 Infinispan(infinispan.org)は実際の実装です。 –

+0

これは、あるマシン(つまりマスタ)フォームDB内のデータを他のマシン(つまりスレーブ)にコピーして、他のマシンがマスターから読み込むクラスタ内に何もロードしないようにするためです。 –

関連する問題