我在分布式异步模式下使用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是机器名称。
答案 0 :(得分:1)
(从上面的Flavius评论中复制:)
在您的情况下我要做的是将其拆分为一个putAll不包含超过例如1MB数据然后同步发送(使用cache.getAdvancedCache()。withFlags(FORCE_SYNCHRONOUS))。或以其他方式限制同时播出的消息数量(另请参阅高级缓存上的putAllAsync方法)。