我們有一箇中等大小的圖形,其中包含6330318個節點和6779549個關係。導入數據後,我無法啓動neo4j服務器或neo4j外殼。他們都失敗了GC overhead limit exceeded
錯誤。我爲JVM提供了12 GB的最大堆空間大小。服務器有15GB RAM。 neo4j.properies具有內存映射IO的以下配置。無法查詢內存不足錯誤的Neo4J數據庫
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有什麼其他調整選項可以在合理的響應時間內完成這項工作?
所以它不啓動或者你只看到問題,當你發送一個查詢?有一點需要記住的是,Neo4j使用的內存是堆+ MMIO,所以我可能會減小堆大小,所以你幾乎不佔用整個機器的所有內存。 你能分享你正在運行的查詢嗎? –
tomcat的最大堆大小爲12 GB,而服務器總共有16 GB的內存,所以似乎有足夠的空閒內存用於內存映射IO(除了tomcat之外沒有其他主要進程正在運行)。 我試圖運行這個基本查詢: START裁判=節點(*)MATCH裁判< - [r:IS_FRIEND_OF] - (referrer:用戶)WHERE裁判:1677523' RETURN referrer; –
順便說一句,tomcat進程確實啓動了,但它開始在查詢數據庫時發生內存不足錯誤。 –