我们有一个中等大小的图表,有6330318个节点和6779549个关系。导入数据后,我无法启动neo4j服务器或neo4j shell。它们都因GC overhead limit exceeded
错误而失败。我给JVM提供了12 GB的最大堆空间大小。服务器有15GB RAM。 neo4j.properies具有以下内存映射IO配置。
neostore.nodestore.db.mapped_memory=400M
neostore.relationshipstore.db.mapped_memory=520M
neostore.propertystore.db.mapped_memory=100M
neostore.propertystore.db.strings.mapped_memory=10M
neostore.propertystore.db.arrays.mapped_memory=10M
我们在图表中没有任何属性,因此属性存储相关设置的值很低。
我还编写了一个用于查询图形的小型Web应用程序,该应用程序部署在Tomcat上。这也无法使用以下错误查询图表
java.lang.OutOfMemoryError: Java heap space
java.util.Arrays.copyOf(Arrays.java:2245)
java.util.Arrays.copyOf(Arrays.java:2219)
java.util.ArrayList.grow(ArrayList.java:242)
java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:216)
java.util.ArrayList.ensureCapacityInternal(ArrayList.java:208)
java.util.ArrayList.add(ArrayList.java:440)
org.apache.lucene.index.FieldInfos.addInternal(FieldInfos.java:216)
org.apache.lucene.index.FieldInfos.read(FieldInfos.java:361)
org.apache.lucene.index.FieldInfos.<init>(FieldInfos.java:74)
org.apache.lucene.index.SegmentCoreReaders.<init>(SegmentCoreReaders.java:80)
org.apache.lucene.index.SegmentReader.get(SegmentReader.java:116)
org.apache.lucene.index.SegmentReader.get(SegmentReader.java:94)
org.apache.lucene.index.DirectoryReader.<init>(DirectoryReader.java:105)
org.apache.lucene.index.ReadOnlyDirectoryReader.<init>(ReadOnlyDirectoryReader.java:27)
org.apache.lucene.index.DirectoryReader$1.doBody(DirectoryReader.java:78)
org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:709)
org.apache.lucene.index.DirectoryReader.open(DirectoryReader.java:72)
org.apache.lucene.index.IndexReader.open(IndexReader.java:256)
org.neo4j.kernel.api.impl.index.LuceneLabelScanStore.init(LuceneLabelScanStore.java:249)
org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:483)
org.neo4j.kernel.lifecycle.LifeSupport.init(LifeSupport.java:72)
org.neo4j.kernel.impl.nioneo.xa.NeoStoreXaDataSource.start(NeoStoreXaDataSource.java:423)
org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:507)
org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:115)
org.neo4j.kernel.impl.transaction.XaDataSourceManager.start(XaDataSourceManager.java:164)
org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:507)
org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:115)
org.neo4j.kernel.InternalAbstractGraphDatabase.run(InternalAbstractGraphDatabase.java:339)
org.neo4j.kernel.EmbeddedGraphDatabase.<init>(EmbeddedGraphDatabase.java:59)
org.neo4j.graphdb.factory.GraphDatabaseFactory$1.newDatabase(GraphDatabaseFactory.java:90)
org.neo4j.graphdb.factory.GraphDatabaseBuilder.newGraphDatabase(GraphDatabaseBuilder.java:199)
com.socialtwist.rnet.web.RnetNeo4jServlet.init(RnetNeo4jServlet.java:44)
我们已在具有16 GB RAM的服务器上部署了该应用程序,并为Tomcat提供了12 GB的堆空间。 Neo4J还有哪些其他调整选项可以在合理的响应时间内完成这项工作?
答案 0 :(得分:2)
图表中有多少个标签?你的图表和查询都有些不对劲。我认为你把标签(类型)与id&#39>混淆了
创建索引:用户(id);
MATCH(裁判:用户)&lt; - [:IS_FRIEND_OF] - (推荐人:用户)WHERE referee.id = 1677523 RETURN referrer;
修复图形模型后应立即返回,即删除所有数字标签