我有一个 8 节点集群,每个集群有 16GB RAM。以前,我使用过 Ignite 1.2 版本没有任何问题。最近我搬到了2.6。现在,对于一个小数据集,它工作正常。但是对于大型数据集,每次它都会给我一个错误“内存不足”或“无法发送消息”等。我每个节点的 Ignite 配置如下:
<property name="defaultDataRegionConfiguration">
<bean class="org.apache.ignite.configuration.DataRegionConfiguration">
<property name="initialSize" value="#{500 * 1024 * 1024}"/>
<property name="maxSize" value="#{12L * 1024 * 1024 * 1024}"/>
<property name="pageEvictionMode" value="RANDOM_2_LRU"/>
<property name="persistenceEnabled" value="true"/>
<property name="metricsEnabled" value="true"/>
</bean>
</property>
Run Code Online (Sandbox Code Playgroud)
我使用“Ignite.sh -Xmx15g -Xms15g”在每个节点中运行 Ignite。我已经配置了两个缓存(cache1,cache2),如下所示,并对它们运行连接查询。
RendezvousAffinityFunction affFunc = new RendezvousAffinityFunction();
affFunc.setExcludeNeighbors(true);
affFunc.setPartitions(1024);
CacheConfiguration<Long, EMP> cache1 = new CacheConfiguration<>(EMP_CACHE);
cache1.setIndexedTypes(Long.class, EMP.class);
cache1.setSqlFunctionClasses(EMPFunctions.class);
cache1.setCacheMode(CacheMode.PARTITIONED);
cache1.setAffinity(affFunc);
Run Code Online (Sandbox Code Playgroud)
我最大的数据集包含超过 400 万条记录。我尝试了很多方法,甚至使用堆上选项。但是与大数据集的连接操作给了我一个错误。但是对于较小的数据集,它工作正常。任何人都可以帮助我为我的集群配置 ON-HEAP 或 OFF-HEAP。
ignite ×1