Azure 写入多节点群集时的Neo4J InvalidEpochException

Azure 写入多节点群集时的Neo4J InvalidEpochException,azure,neo4j,Azure,Neo4j,我有一个Neo4J企业集群,它有6个节点(1个主节点和5个从节点),托管在单独的Linux(CentOS 6.4)虚拟机中,我正在使用这些虚拟机测试应用程序。虚拟机托管在Azure中。我有一个对象,它使用一种简单的类似循环的技术来管理所有6个节点之间的连接。我注意到,在写入从属节点时,messages.log文件中多次出现以下错误消息: ERROR [o.n.k.h.c.m.MasterServer]: Could not finish off dead channel org.neo4j.ke

我有一个Neo4J企业集群,它有6个节点(1个主节点和5个从节点),托管在单独的Linux(CentOS 6.4)虚拟机中,我正在使用这些虚拟机测试应用程序。虚拟机托管在Azure中。我有一个对象,它使用一种简单的类似循环的技术来管理所有6个节点之间的连接。我注意到,在写入从属节点时,messages.log文件中多次出现以下错误消息:

ERROR [o.n.k.h.c.m.MasterServer]: Could not finish off dead channel
org.neo4j.kernel.ha.com.master.InvalidEpochException: Invalid epoch 282880438682249,
correct epoch is 282880443056723 at 
org.neo4j.kernel.ha.com.master.MasterImpl.assertCorrectEpoch(MasterImpl.java:218) ~
[neo4j-ha-2.1.2.jar:2.1.2]
    at org.neo4j.kernel.ha.com.master.MasterImpl.finishTransaction(MasterImpl.java:363)
      ~[neo4j-ha-2.1.2.jar:2.1.2]
    at 
    org.neo4j.kernel.ha.com.master.MasterServer.finishOffChannel(MasterServer.java:70)  
    ~[neo4j-ha-2.1.2.jar:2.1.2]
    at org.neo4j.com.Server.tryToFinishOffChannel(Server.java:411) ~[neo4j-com 2.1.2.jar:2.1.2]
    at org.neo4j.com.Server$4.run(Server.java:589) [neo4j-com-2.1.2.jar:2.1.2]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) [na:1.7.0_60]
    at java.util.concurrent.FutureTask.run(FutureTask.java:262) [na:1.7.0_60]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_60]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [na:1.7.0_60]
    at java.lang.Thread.run(Thread.java:745) [na:1.7.0_60]
我不知所措。为什么会发生这种错误?发生此错误时,写入失败。我让服务器通过NTP同步时间。写入Neo4J的应用程序是一个使用Neo4JClient库的.Net应用程序。感谢您提供的任何指导


Amir.

当主服务器在提交事务的过程中发生,而从服务器在提交事务时,可能会发生
InvalidePochexException
。出现意外主开关的主要原因是GC暂停时间过长,比群集超时设置长


因此,您需要分析GC行为并对其进行优化,或者调整集群超时设置。

谢谢您,Stefan。什么是适当的群集超时设置,哪些设置应该特别针对?Amir,首先检查您是否遇到GC问题。采用超时也有一些缺点。例如,在
neo4j wrapper.conf
中启用gc日志记录。