Jboss Infinispan集群在出现海量数据时无法通信

Jboss Infinispan集群在出现海量数据时无法通信,jboss,distributed-caching,infinispan,Jboss,Distributed Caching,Infinispan,我在分布式异步模式下使用Infinispan,在4个不同的系统上有4个节点。每个节点以3 GB的堆大小运行 只有一个节点扮演加载器的角色,并尝试在块中加载5000万条记录(在一个循环中,500万条记录被缓存10次)。根据我的计算,4个节点可以处理这么多的数据,所以空间不是问题 当我启动所有4个节点时,集群成功形成,数据开始加载到缓存中。但由于数据非常庞大,一段时间后,任何一个节点都无法从另一个节点获得响应,并出现以下异常: 2013-11-01 05:35:14 ERROR org.infini

我在分布式异步模式下使用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)
Inumu410-54463是机器名。

(复制自上面的注释:)


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

我没有得到“块”-因此,这些实际上是10次大值输入,还是50万次小值输入?另外,请指定您使用的Infinispan的确切版本。我使用的是Infinispan 5.3.0。Chunks意味着我从数据库中查询1000万条记录并执行cache.putAll()。我做了10次。所以我想在缓存中加载5000万条记录。我想我们需要org.jgroups.protocols包上的跟踪级日志-我现在不知道这些东西在哪里卡住了。但在一个命令中有500万个条目可能不是一个好主意。这意味着非常大的jgroup消息,并且由于这些消息是并行发送的(在异步模式下,您的传输速度不会受到限制)=>这些消息必须在内存中,甚至可能是多次(编组前/编组后)。此外,putAll路由不是很聪明(这相当愚蠢!)-事实上,在这种情况下,它将命令发送到所有节点,然后每个节点也将其发送到所有其他节点。在您的情况下,我要做的是将其拆分为一个putAll,使其包含的数据不超过1MB,然后同步发送这些数据(使用cache.getAdvancedCache().withFlags(强制同步)。或者同时限制广播中的消息数量(另请参见高级缓存上的PutallSync方法)。有什么进展吗?我是否应该将上面的评论作为答案?