2012-03-08 109 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