Infinispan集群在数据巨大的情况下无法通信



我在分布式异步模式下使用 Infinispan,在 4 个不同的系统上有 4 个节点。每个节点以 3 GB 的堆大小运行。

只有一个节点扮演加载器的角色,并尝试以块的形式加载 5000 万条记录(在循环中,500 万条记录进入缓存 10 次)。根据我的计算,4 个节点可以处理那么多数据,因此空间不是问题。

当我启动所有 4 个节点时,群集会成功形成,数据开始加载到缓存中。但是由于数据非常庞大,一段时间后任何一个节点都无法从另一个节点获得响应,并且失败,并出现以下异常:

2013-11-01 05:35:14 ERROR org.infinispan.interceptors.InvocationContextInterceptor     - ISPN000136: Execution error
org.infinispan.util.concurrent.TimeoutException: Timed out after 15 seconds waiting for a response from INUMUU410-54463
 at org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher.processCalls(CommandAwareRpcDispatcher.java:459)
 at org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher.invokeRemoteCommands(CommandAwareRpcDispatcher.java:154)
 at org.infinispan.remoting.transport.jgroups.JGroupsTransport.invokeRemotely(JGroupsTransport.java:534)

INUMUU410-54463 是计算机名称。

(复制自上面的Flavius评论:)

在您的情况下,我要做的是将其拆分为一个 putAll 不包含超过 1MB 的数据,然后同步发送这些数据(使用 cache.getAdvancedCache().withFlags(FORCE_SYNCHRONOUS))。或者以其他方式限制正在直播的消息数(另请参阅高级缓存上的 putAllAsync 方法)。

相关内容

最新更新