我正在运行一个非常基本的测试来检查我的理解并评估 neo4j REST 服务器(neo4j-community-1.8.M07)。我正在使用 Neo4j Python REST 客户端。
每次测试迭代都以源节点名称和目标节点名称的随机字符串开始。这些名称只包含字母a..z
和数字0..9
(奇怪的是,如果我使用A..Z
and ,我从来没有让它失败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 )
...
以防万一 - 在发出查询以创建新关系之前,我检查图表以确保源节点和目标节点存在。该检查从未失败。