【问题标题】:Broken connection after Mongod restartMongod重启后连接断开
【发布时间】:2012-08-09 15:20:36
【问题描述】:

我正在使用 Mongo Java 驱动程序 (2.8.0) 连接到 Mongo 实例。

我注意到,如果我重新启动 mongod,那么重新启动后的第一个操作(即使是简单的 count())总是会因 EOFException 或 Broken pipe 而失败。

我正在使用以下 Mongo 选项:

opts.autoConnectRetry = true;
opts.maxAutoConnectRetryTime = 2000L;
opts.connectTimeout = 30000;
opts.socketTimeout = 60000;

有没有办法告诉驱动程序尝试重新建立连接?我认为“autoReconnectRetry”会做到这一点,但只有在连接被“发现”(通过单个失败的操作)被破坏后才有效。

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    AutoConnectRetry 选项将在打开与服务器的连接时重试,但不能保证您不会收到读取异常。您仍然需要处理应用程序中的异常并在适当时重试。

    从文档中摘录:

    如果为 true,驱动程序将继续尝试连接到同一服务器,以防套接字无法建立。持续重试的最长时间,默认为 15 秒。这对于通过阻止操作来避免在服务器暂时关闭时引发一些异常很有用。平滑过渡到新的主节点也很有用(以便在重试时间内选出新的主节点)。请注意,当使用此标志时: - 对于副本集,驱动程序将尝试连接到旧主服务器,而不是立即故障转移到新主服务器 - 这不会阻止抛出异常套接字上的读/写操作,必须由应用程序处理。即使此标志为假,驱动程序也已经具有自动重新创建断开连接并重试读取操作的机制。默认为假。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-20
      • 2012-08-07
      • 2019-02-22
      • 1970-01-01
      • 1970-01-01
      • 2013-11-21
      • 1970-01-01
      • 2016-11-13
      相关资源
      最近更新 更多