为什么php MongoClient :: getHosts会显示比节点更多的主机?

时间:2016-09-29 10:42:37

标签: php mongodb mongodb-replica-set

我们有一个mongodb副本集,其中3个节点(db01-03)作为副本集“rs0”运行。

通过MongoClient::getHosts()获取主机信息时,主服务器SOMETIMES报告两次,一次作为rs0的一部分,一次是独立的(所以看起来如此?):

{
  "db01.example.com:27017;rs0;...": {
    "host": "db01.example.com",
    "port": 27017,
    "health": 1,
    "state": 2,
    "ping": 0,
    "lastPing": 1475144757
  },
  "db02.example.com:27017;rs0;........": {
    "host": "db02.example.com",
    "port": 27017,
    "health": 1,
    "state": 1,
    "ping": 0,
    "lastPing": 1475144757
  },
  "db03.example.com:27017;rs0;.......": {
    "host": "db03.example.com",
    "port": 27017,
    "health": 1,
    "state": 2,
    "ping": 0,
    "lastPing": 1475144757
  },
  "db02.example.com:27017;-;.......": {
    "host": "db02.example.com",
    "port": 27017,
    "health": 1,
    "state": 1,
    "ping": 0,
    "lastPing": 1475143739
  }
}

为什么会发生这种情况,这是故意/偶然还是我们应该关注的事情?

问题是,我们的监控会定期比较“报告的主机”与“预期的主机”,并且我们会收到自4 !== 3以来的警报。

PS:我们当然可以通过比较$actual<$expected来修复警报。这不是问题,但是:

为什么主要有时会显示两次?

0 个答案:

没有答案