我有一个包含数百万节点和关系的大图。 我需要找出与< = 5个箍之间的所有可能的关系组。 示例: GroupA {Node1,Node2,Node3,... Node100}具有100个节点的节点组。查找节点组之间的所有可能关系
现在我想找到所有这些节点之间的所有可能的关系。
当我运行包含100个节点的Cypher Query时,一切正常,但是当我用101个节点运行它时,我得到了TimeOut。 (所有请求都是REST)
{
"query": "start s = node(114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214), d = node(114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214) match p = s -[r?*0..5]-> d return p ",
"params": {}
}
有人可以解释我会发生什么?错误查询?
UPDATE: 另一个问题发现: 当我运行200个的Cypher查询环路,服务器停止后查询号码100
Something like that
for (i=0; i<200; i++)
{
query = "start s = node(" + sourceNodeId + "), d = node(" + destinationNodeid + ") match p = s -[r?*0.." + deep + "]-> d return p"
RunCypherQuery(query);
}
回应可能会导致什么为这种奇怪的行为? 10X
UPDATE:
我进行存储的调整和增加JavaMemory MIN和MAX 4G的,而不是4M和64M 结果是例外:
Error 500 GC overhead limit exceeded
HTTP ERROR 500
Problem accessing /db/data/cypher.
Reason:
GC overhead limit exceeded</pre></p><h3>Caused by:</h3><pre>java.lang.OutOfMemoryError: GC overhead limit exceeded
at scala.collection.JavaConversions$.mapAsScalaMap(JavaConversions.scala:488)
at scala.collection.JavaConverters$$anonfun$mapAsScalaMapConverter$1.apply(JavaConverters.scala:441)
at scala.collection.JavaConverters$$anonfun$mapAsScalaMapConverter$1.apply(JavaConverters.scala:441)
at scala.collection.JavaConverters$AsScala.asScala(JavaConverters.scala:80)
at org.neo4j.cypher.internal.pipes.MutableMaps$.create(Pipe.scala:60)
at org.neo4j.cypher.internal.pipes.ExecutionContext.newWith(Pipe.scala:136)
at org.neo4j.cypher.internal.pipes.matching.AddedHistory.toMap(History.scala:75)
at org.neo4j.cypher.internal.pipes.matching.PatternMatcher.isMatchSoFar(PatternMatcher.scala:166)
at org.neo4j.cypher.internal.pipes.matching.PatternMatcher.org$neo4j$cypher$internal$pipes$matching$PatternMatcher$$traverseNextNodeFromRelationship(PatternMatcher.scala:98)
at org.neo4j.cypher.internal.pipes.matching.PatternMatcher$$anonfun$4.apply(PatternMatcher.scala:150)
at org.neo4j.cypher.internal.pipes.matching.PatternMatcher$$anonfun$4.apply(PatternMatcher.scala:150)
at scala.collection.immutable.Stream$$anonfun$map$1.apply(Stream.scala:175)
at scala.collection.immutable.Stream$$anonfun$map$1.apply(Stream.scala:175)
at scala.collection.immutable.Stream$Cons.tail(Stream.scala:634)
at scala.collection.immutable.Stream$Cons.tail(Stream.scala:626)
at scala.collection.immutable.Stream.foldLeft(Stream.scala:302)
at org.neo4j.cypher.internal.pipes.matching.PatternMatcher.traverseRelationship(PatternMatcher.scala:150)
at org.neo4j.cypher.internal.pipes.matching.PatternMatcher.traverseNextSpecificNode(PatternMatcher.scala:61)
at org.neo4j.cypher.internal.pipes.matching.PatternMatcher.traverseNode(PatternMatcher.scala:72)
at org.neo4j.cypher.internal.pipes.matching.PatternMatcher.traverseNextNodeOrYield(PatternMatcher.scala:177)
at org.neo4j.cypher.internal.pipes.matching.PatternMatcher.traverseNextSpecificNode(PatternMatcher.scala:60)
at org.neo4j.cypher.internal.pipes.matching.PatternMatcher.traverseNode(PatternMatcher.scala:72)
at org.neo4j.cypher.internal.pipes.matching.PatternMatcher.foreach(PatternMatcher.scala:36)
at scala.collection.TraversableLike$class.map(TraversableLike.scala:194)
at org.neo4j.cypher.internal.pipes.matching.PatternMatcher.map(PatternMatcher.scala:28)
at org.neo4j.cypher.internal.pipes.matching.PatterMatchingBuilder.org$neo4j$cypher$internal$pipes$matching$PatterMatchingBuilder$$createPatternMatcher(PatterMatchingBuilder.scala:90)
at org.neo4j.cypher.internal.pipes.matching.PatterMatchingBuilder$$anonfun$getMatches$1.apply(PatterMatchingBuilder.scala:47)
at org.neo4j.cypher.internal.pipes.matching.PatterMatchingBuilder$$anonfun$getMatches$1.apply(PatterMatchingBuilder.scala:47)
at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:200)
at scala.collection.TraversableLike$$anonfun$flatMap$1.apply(TraversableLike.scala:200)
at org.neo4j.cypher.internal.pipes.matching.PatternMatcher.yieldThis(PatternMatcher.scala:185)
at org.neo4j.cypher.internal.pipes.matching.PatternMatcher.traverseNextNodeOrYield(PatternMatcher.scala:175)
我执行升级到1.9。然后我删除了内存调整为默认值。在我最后一次尝试中,当A的大小为100个节点和B 1000节点的大小时,我成功地在2组A和B之间执行查询。该查询运行约69042毫秒=> 1分钟9秒。问题仍然存在:为什么我无法使用大于100个节点的源组执行查询。 – Zaber