私は非常に基本的なテストを実行して、理解を確認し、neo4j RESTサーバー(neo4j-community-1.8.M07)を評価しています。Neo4jPythonRESTクライアントを使用しています。
各テストの反復は、送信元ノード名と宛先ノード名のランダムな文字列から始まります。名前には文字a..z
と数字のみが含まれています0..9
(奇妙なことに、andを使用しても失敗することはありませんA..Z
)0..9
。名前は1文字から36文字の長さで、繰り返し文字はありません。36個のノードを作成します。ここで、1番目のノード名は1文字の長さで、36番目のノード名は36文字です。次に、すべてのノード間に関係を作成します。各リレーションの名前は、ソースノード名と宛先ノード名を連結したものです。最終的なグラフには、37個のノード(1個の参照ノードと1個の文字から36個の非反復文字までの名前を持つ36個のノード)と1260個の関係があります。各テストの反復の前に、グラフをクリアして、(参照)ノードが1つだけになるようにします。
問題は、数回の反復が成功した後、neo4jRESTサーバーがクラッシュすることです。
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 )
...
念のため、新しいリレーションを作成するためのクエリを発行する前に、グラフをチェックして、ソースノードと宛先ノードが存在することを確認します。そのチェックは決して失敗しませんでした。