2012-03-08 107 views
0

我正在評估Windows中的Neo4j。因爲我需要從.NET應用程序訪問Neo4j,所以我通過.NET客戶端庫(http://hg.readify.net/neo4jclient/)使用Neo4j Cypher REST API。Neo4j - 內存不足 - Cypher REST API

當遍歷一個合理大小的圖(大約100,000個節點)時,我面對Neo4j java服務器中的「內存不足」問題。以下是REST響應中報告的異常。另外,下面提到的是運行的密碼查詢。 我試圖用Neo4j服務器的-Xmx1024m選項來增加JVM堆空間,但這沒有幫助。將不勝感激任何其他建議。

未處理的異常:System.ApplicationException:執行請求時收到意外的HTTP st atus。

查詢是:
START X =節點(1213997)
MATCH X - [:BOM * 1..5] - >Ñ RETURN 'BOM' AS的RelationshipType,n.Number? AS編號,n.Id?爲ID

響應狀態爲:500 Java堆空間

The raw response body was: <html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/> 
<title>Error 500 Java heap space</title> 
</head> 
<body><h2>HTTP ERROR 500</h2> 
<p>Problem accessing /db/data/cypher. Reason: 
<pre> Java heap space</pre></p><h3>Caused by:</h3><pre>java.lang.OutOfMemoryE 
rror: Java heap space 
     at java.lang.AbstractStringBuilder.&lt;init&gt;(Unknown Source) 
     at java.lang.StringBuilder.&lt;init&gt;(Unknown Source) 
     at org.neo4j.server.rest.repr.RepresentationType.&lt;init&gt;(Representa 
tionType.java:108) 
     at org.neo4j.server.rest.repr.Representation.&lt;init&gt;(Representation 
.java:73) 
     at org.neo4j.server.rest.repr.ListRepresentation.&lt;init&gt;(ListRepres 
entation.java:36) 
     at org.neo4j.server.rest.repr.CypherResultRepresentation.data(CypherResu 
ltRepresentation.java:64) 
+0

請詳細解釋一下你的目標是什麼與這個查詢。它似乎沒有太多目的列出大量數據。 – 2012-03-08 18:03:32

+0

要求是從根節點開始獲取整個產品或文檔結構。所以,在大多數情況下,數據大小不會太大,我試圖找到這樣的查詢的邊界條件。 – 2012-03-09 06:35:08

+0

你有沒有嘗試分頁結果,看看是否有幫助?針對1.8版本的 – 2012-03-09 12:56:03

回答

0

深度遍歷5有可能接觸到廣大的圖形......你有什麼計劃,結果呢?是否有必要返回整個結果?如果您只使用其中的一部分,可以直接在Cypher查詢中指定,以限制結果。

+0

需要的是從一個根節點開始獲取整個圖。 '5'是我的測試圖深度,我沒有在cypher API中找到指示獲取整個圖的方法(就像可以在嵌入式Java API中完成的那樣)。結果將用於處理返回的節點 - 顯示在表中,用於報告等。我試圖查看此類查詢中支持的最大節點 - 真實生活場景是較少的節點 – 2012-03-09 07:36:49