重新连接到失败的mongo服务器

时间:2016-05-10 09:46:47

标签: mongodb node-mongodb-native

我在启动时使用重新连接选项连接到mongo,并在整个应用程序中使用创建的数据库。

var options = {
    "server": {
      "auto_reconnect": true,
      "poolSize": 10,
      "socketOptions": {
        "keepAlive": 1
       }
    },
    "db": {
      "numberOfRetries": 60,
      "retryMiliSeconds": 5000
    }
  };

MongoClient.connect(dbName, options).then(useDb).catch(errorHandler)

当我重新启动mongo服务器时,驱动程序重新连接成功。如果我停止服务器并在30秒后启动它,我会在每次操作时获得MongoError“拓扑被破坏”。这30秒似乎是numberOfRetries = 5的默认值,而我的给定选项没有效果。难道我做错了什么?我怎样才能长时间管理重新连接?

1 个答案:

答案 0 :(得分:0)

根据this answer,为了解决此错误,您应该在选项中增加连接超时:

var options = {
  "server": {
    "auto_reconnect": true,
    "poolSize": 10,
    "socketOptions": {
      "keepAlive": 1,
      "connectTimeoutMS": 30000 // increased connection timeout
     }
  },
  "db": {
    "numberOfRetries": 60,
    "retryMiliSeconds": 5000
  }
};