1

我正在运行一个非常基本的测试来检查我的理解并评估 neo4j REST 服务器(neo4j-community-1.8.M07)。我正在使用 Neo4j Python REST 客户端

每次测试迭代都以源节点名称和目标节点名称的随机字符串开始。这些名称只包含字母a..z和数字0..9(奇怪的是,如果我使用A..Zand ,我从来没有让它失败0..9)。该名称的长度可以从 1 个字符到 36 个字符,并且没有重复的字符。我创建了 36 个节点,其中第一个节点名称只有一个字符长,第 36 个节点名称有 36 个字符。然后我在所有节点之间创建关系。每个关系的名称是源节点名称和目标节点名称的串联。最终图有 37 个节点(1 个参考节点和 36 个节点,名称从 1 个字符到 36 个非重复字符)和 1260 个关系。在每次测试迭代之前,我都会清除图表,以便它只有一个(参考)节点。

问题是经过几次成功的迭代neo4j REST服务器崩溃:

Error [500]: Internal Server Error. Server got itself in trouble.

发送的数据无效

导致系统崩溃的查询可能不同 - 这是导致问题的 query_string 示例:

START n_from=node:index_faqts(node_name="h"),
  n_to=node:index_faqts(node_name="hg2b8wpj04ms")CREATE UNIQUE
  n_from-[r:`hhg2b8wpj04ms`  ]->n_to RETURN r

self.cypher_extension.execute_query( query_string )

我花了很多时间试图找到一种趋势,但徒劳无功。如果我对查询做错了什么,那么任何测试都不会起作用。我观察到在 5 到 25 轮之间成功的测试周期数会发生崩溃。

什么可能导致 neo4j REST 服务器崩溃?

PS 一些细节...

节点是这样创建的:

...
self.index_faqts[ "node_name" ][ p_str_node_name ] =
  self.gdb.nodes.create( **p_dict_node_attributes )
...

以防万一 - 在发出查询以创建新关系之前,我检查图表以确保源节点和目标节点存在。该检查从未失败。

4

1 回答 1

3

您使用了太多的关系类型,目前限制为 32k。如果您有有效的用例,可能会在 Neo4j 中进行修补。

于 2012-08-21T02:27:59.580 回答