为什么在MongoDB重启后Java应用程序会失去连接?
MongoDB位于一个包含三个成员的副本集中。有时一个或两个MongoDB实例重新启动,Java应用程序失去连接并显示以下错误,然后我必须手动重新启动Java应用程序,以便重新连接MongoDB副本集:为什么在MongoDB重启后Java应用程序会失去连接?,java,apache,mongodb,database-connection,Java,Apache,Mongodb,Database Connection,MongoDB位于一个包含三个成员的副本集中。有时一个或两个MongoDB实例重新启动,Java应用程序失去连接并显示以下错误,然后我必须手动重新启动Java应用程序,以便重新连接MongoDB副本集: org.springframework.dao.DataAccessResourceFailureException: Unable to connect to any server that matches {serverSelectors=[ReadPreferenceServerSel
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实例重新启动,是否有任何解决方案可以保持连接?非常感谢。非常感谢。我通过更改spring数据的配置修复了这个问题。
我在之前设置了套接字超时=“1500”。我不应该设置套接字超时。默认值为0(无限时间)。您是否提供了连接字符串中的所有3台服务器?@yaoxing是的,当然,我使用spring数据配置副本集。您可以发布您的配置吗?尤其是
socketTimeout
,这不是我所期望的行为。副本集监视器设计为在服务器重新可用时立即重新连接。您使用的是哪个版本的Spring Data MongoDB?重新启动之前,您等待了多长时间?是否一次重新启动一个MongoDB实例?你能发布完整的堆栈跟踪,包括由引起的吗?这真的对你有帮助吗?即使设置为0,我也有同样的问题