MongoDB副本心跳请求超过了时间

时间:2016-07-20 15:54:59

标签: mongodb replication sharding

我有副本集(托管在亚马逊上),其中包含:

  • 次级
  • 仲裁器

所有版本都是版本3.2.6,这个副本在我的分片群集中制作一个碎片(如果这很重要,虽然我认为不是这样)。

当我在主要文件上键入rs.status()时,它表示无法达到辅助(同样的事情是在仲裁者身上):

        {
        "_id" : 1,
        "name" : "secondary-ip:27017",
        "health" : 0,
        "state" : 8,
        "stateStr" : "(not reachable/healthy)",
        "uptime" : 0,
        "optime" : {
            "ts" : Timestamp(0, 0),
            "t" : NumberLong(-1)
        },
        "optimeDate" : ISODate("1970-01-01T00:00:00Z"),
        "lastHeartbeat" : ISODate("2016-07-20T15:40:50.479Z"),
        "lastHeartbeatRecv" : ISODate("2016-07-20T15:40:51.793Z"),
        "pingMs" : NumberLong(0),
        "lastHeartbeatMessage" : "Couldn't get a connection within the time limit",
        "configVersion" : -1
    }

(顺便看一下 optimeDate O.o)

我的日志错误是:

[ReplicationExecutor] Error in heartbeat request to secondary-ip:27017; ExceededTimeLimit: Couldn't get a connection within the time limit

奇怪的是,当我继续学习并输入rs.status()时,一切看起来都不错。此外,我能够从我的主要实例(mongo --host secondary)连接到辅助,所以我猜这不是网络问题。昨天一切正常。

TL; DR 我的主服务器无法看到辅助服务器和仲裁服务器无法查看辅助服务器且我的辅助服务器看不到辅助服务器,而且前一天工作正常,我可以从主服务器手动连接到辅助服务器。 / p>

任何人都知道会出现什么问题?

TNX, 伊万

1 个答案:

答案 0 :(得分:0)

辅助 optimeDate 似乎是导致错误的原因,了解错误optimeDate的原因的最佳方法是调查辅助机器的当前日期时间,因为它可以也是错的。不确定您是否仍在寻找答案但是optimedate是问题,而不是您的replicaset机器之间的连接。