如何在 jgroup 复制的 hashmap 中为状态传输提供超时?
How to give timeout for state transfer in jgroup replicated hashmap?
如何在 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)上使用相同的代码,但是当我 运行 该代码时,我收到状态超时异常的异常,因为 10000 毫秒已经过去并且只有部分数据被复制。如何更改初始状态传输的超时时间?
我使用的是tcp协议,我的tcp.xml
如下,
<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>
_baseSeatLayoutCache.start(10000)
10000
ms为超时;增加它或设置为 0
以等待直到完整状态被传输。
如何在 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)上使用相同的代码,但是当我 运行 该代码时,我收到状态超时异常的异常,因为 10000 毫秒已经过去并且只有部分数据被复制。如何更改初始状态传输的超时时间?
我使用的是tcp协议,我的tcp.xml
如下,
<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>
_baseSeatLayoutCache.start(10000)
10000
ms为超时;增加它或设置为 0
以等待直到完整状态被传输。