【问题标题】:Why does the Java App lose connection after MongoDB restarted?为什么MongoDB重启后Java App会失去连接?
【发布时间】:2014-07-22 01:58:14
【问题描述】:

MongoDB 位于具有三个成员的副本集中。有时一两个MongoDB实例重启,Java应用程序失去连接并显示以下错误,然后我必须手动重启Java应用程序才能重新连接MongoDB副本集:

org.springframework.dao.DataAccessResourceFailureException: 
Unable to connect to any server that matches 
{serverSelectors=[ReadPreferenceServerSelector{readPreference=secondaryPreferred}, 
LatencyMinimizingServerSelector{acceptableLatencyDifference=15 ms}]}; 
nested exception is com.mongodb.MongoServerSelectionException: 
Unable to connect to any server that matches 
{serverSelectors=[ReadPreferenceServerSelector{readPreference=secondaryPreferred}, 
LatencyMinimizingServerSelector{acceptableLatencyDifference=15 ms}]}

我想知道即使 MongoDB 实例重新启动,是否有任何解决方案可以保持连接?非常感谢。

【问题讨论】:

  • 您是否在连接字符串中提供了所有 3 台服务器?
  • @yaoxing 是的,我使用spring数据来配置副本集
  • 你能发布你的配置吗?尤其是socketTimeout,...
  • 这不是我所期望的行为。副本集监视器旨在在服务器再次可用时重新连接。您使用的是什么版本的 Spring Data MongoDB?你等了多久才重新启动?您是否一次重新启动一个 MongoDB 实例?你能发布完整的堆栈跟踪,包括引起的吗?

标签: java apache mongodb database-connection


【解决方案1】:

非常感谢。我通过更改弹簧数据的配置解决了这个问题。 我之前设置了 socket-timeout="1500" 。我不应该设置套接字超时。默认为 0(无限时间)。

【讨论】:

  • 这真的对你有帮助吗?
  • 即使设置为 0 我也有同样的问题
猜你喜欢
  • 1970-01-01
  • 2019-04-01
  • 1970-01-01
  • 2013-05-20
  • 1970-01-01
  • 2015-01-12
  • 2015-08-26
  • 2016-04-22
  • 1970-01-01
相关资源
最近更新 更多