与Neo4j断开连接。请检查电源线是否已拔下

时间:2015-03-05 09:02:27

标签: neo4j nosql

我在neo4j 2.1.7上运行简单查询 我正在尝试执行该查询:

MATCH(a:来电者) - [:MADE_CALL] - (c:致电) - [:RECEIVED_CALL] - (b:接收者)CREATE(a) - [:CALLED] - &gt ;(b)返回a,b

当查询正在执行时,我收到以下错误

与Neo4j断开连接。请检查电源线是否已拔下。

然后是另一个错误:

超出GC开销限额

我正在使用16G的RAM工作在Windows Server 2012上,这是我的nodes.properties文件:

**
`neostore.nodestore.db.mapped_memory=1800M 
neostore.relationshipstore.db.mapped_memory=1G
#neostore.relationshipgroupstore.db.mapped_memory=10M
neostore.propertystore.db.mapped_memory=500M
neostore.propertystore.db.strings.mapped_memory=250M
neostore.propertystore.db.arrays.mapped_memory=10M

cache_type=weak
keep_logical_logs=100M size**`

和我的neo4j-community.vmoption文件:

 **
-Xmx8192 
-Xms4098 
-Xmn1G 
-include-options ${APPDATA}\Neo4j Community\neo4j-community.vmoptions**

我有6 128 644个节点,6 506 355个关系和10 488 435个属性

任何解决方案?

1 个答案:

答案 0 :(得分:1)

TL; DR:Neo4j已断开连接,因为您的查询效率太低。解决方案是改进查询。

由于查询的计算密集程度,您的Neo4j实例似乎已超时并经历了GC转储。使用bash shell初始化Neo4j数据库时,可以选择配置某些JVM变量,其中包括Neo4j可用的内存量和堆大小。如果查询超出这些计算限制,Neo4j会自动终止查询,进行GC转储并断开连接。

查看您在数据库中提供的信息,有6M节点具有6M关系。考虑到您的查询主要查找从6M节点的呼叫者到接收者的所有路径,然后尝试执行批量写入操作,Neo4j崩溃/断开连接并不奇怪。我建议找到一种方法来限制查询(即使使用简单的LIMIT关键字)并运行多个较小的查询来完成工作。