2012-03-08 5 views
0

Я оцениваю Neo4j в окнах. Поскольку мне нужно получить доступ к Neo4j из .NET-приложения, я использую Neo4j Cypher REST API через .NET-клиентскую библиотеку (http://hg.readify.net/neo4jclient/).Neo4j - Недостаточно памяти - Cypher REST API

При пересечении графика с достаточно большим размером (около 100 000 узлов), я сталкиваюсь с проблемами «из памяти» на java-сервере Neo4j. Ниже приведено исключение, которое сообщается в ответе REST. Также упоминается ниже запрос cypher. Я попытался увеличить пространство кучи JVM с опцией -Xmx1024m для сервера Neo4j, но это не помогло. По достоинству оценят любые другие предложения.

Unhandled Exception: System.ApplicationException: Получен неожиданный HTTP-адрес atus при выполнении запроса.

Запрос был:
START х = узел (1213997)
СПИЧКА х - [: ВОМ * 1..5] -> п ВОЗВРАТ 'ВОМ' КАК RelationshipType, n.Number? AS Number, n.Id? AS 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

Пожалуйста, объясните немного больше, что ваша цель с этим запросом. Кажется, он перечисляет множество данных без особых целей. –

+0

Требование состоит в том, чтобы получить весь продукт или структуру документа, начиная с корневого узла. Таким образом, хотя в большинстве случаев размер данных не будет таким большим, я пытаюсь найти граничное условие для такого запроса. –

+0

Вы пытались выполнить разбиение на страницы, чтобы узнать, помогает ли это? –

ответ

0

Глубина 5 Обход потенциально может коснуться большинство вашего графа ... то, что вы собираетесь делать с результатом? Нужно ли возвращать весь результат? Если вы используете только часть его, возможно, вы можете указать это в запросе Cypher напрямую, чтобы ограничить результат.

+0

Необходимо получить весь график, начиная с корневого узла. «5» - это моя тестовая графовая глубина, я не нашел способ в API-интерфейсе cypher указать, чтобы получить весь график (как это можно сделать в Embedded Java API). Результат будет использоваться для обработки возвращенных узлов - показать его в таблице, для отчетности и т. Д. Я пытаюсь увидеть максимальные поддерживаемые узлы в этом типе запроса - сценарий реальной жизни - это меньшие узлы –

Смежные вопросы