com.mongodb.MongoTimeoutException:等待连接时在30000毫秒后超时。群集状态的客户端视图为{type=UNKNOWN,servers=[]
我们正在尝试使用Java代码连接到Mongo Atlas URI“mongodb+srv::@serveraddress/dbname?retryWrites=true&w=1”但正在获取MongoTimeoutException异常 奇怪的是,这里的异常跟踪服务器=[]列表为空 这一错误的可能原因是什么 MongoDB服务器和Java驱动程序详细信息: MongoDB服务器:4.2 MongoDB java驱动程序:3.12.5 spring数据mongodb:2.1.5.0版本 如果需要更多信息,请告诉我 谢谢你的帮助com.mongodb.MongoTimeoutException:等待连接时在30000毫秒后超时。群集状态的客户端视图为{type=UNKNOWN,servers=[],mongodb,spring-data-mongodb,Mongodb,Spring Data Mongodb,我们正在尝试使用Java代码连接到Mongo Atlas URI“mongodb+srv::@serveraddress/dbname?retryWrites=true&w=1”但正在获取MongoTimeoutException异常 奇怪的是,这里的异常跟踪服务器=[]列表为空 这一错误的可能原因是什么 MongoDB服务器和Java驱动程序详细信息: MongoDB服务器:4.2 MongoDB java驱动程序:3.12.5 spring数据mongodb:2.1.5.0版本 如果需要更多
com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting to connect. Client view of cluster state is {type=UNKNOWN, servers=[]
at com.mongodb.internal.connection.BaseCluster.getDescription(BaseCluster.java:182)
at com.mongodb.internal.connection.AbstractMultiServerCluster.getDescription(AbstractMultiServerCluster.java:54)
at com.mongodb.client.internal.MongoClientDelegate.getConnectedClusterDescription(MongoClientDelegate.java:152)
at com.mongodb.client.internal.MongoClientDelegate.createClientSession(MongoClientDelegate.java:103)
at com.mongodb.Mongo.createClientSession(Mongo.java:832)
at com.mongodb.MongoClient.startSession(MongoClient.java:582)
at com.mongodb.MongoClient.startSession(MongoClient.java:569)
at com.shutterfly.services.project.InitMongoDBCollection.onApplicationEvent(InitMongoDBCollection.java:36)
at com.shutterfly.services.project.InitMongoDBCollection.onApplicationEvent(InitMongoDBCollection.java:20)
at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172)
at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:402)
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:359)
at org.springframework.boot.context.event.EventPublishingRunListener.running(EventPublishingRunListener.java:105)
at org.springframework.boot.SpringApplicationRunListeners.running(SpringApplicationRunListeners.java:78)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:332)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1260)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1248)
at com.shutterfly.services.project.Application.main(Application.java:18)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:53)
at java.lang.Thread.run(Thread.java:748)
添加答案,以便对其他人有所帮助,他们将来可能会看到类似的问题 我们已经解决了这个问题,问题是找到集群列表并使用默认时间连接到该列表需要时间,我们可以使用“mongoclientationsfactorybean”自定义参数并覆盖默认配置
@Bean
public MongoClientOptionsFactoryBean getMongoClientOptionsFactoryBean() {
MongoClientOptionsFactoryBean mongoClientOptionsFactoryBean = new MongoClientOptionsFactoryBean();
mongoClientOptionsFactoryBean.setConnectTimeout(timeout);
mongoClientOptionsFactoryBean.setConnectionsPerHost(connectionsPerHost);
mongoClientOptionsFactoryBean.setMaxWaitTime(maxWaitTime);
mongoClientOptionsFactoryBean.setServerSelectionTimeout(ServerSelectionTimeout);
mongoClientOptionsFactoryBean.setThreadsAllowedToBlockForConnectionMultiplier(connMultiplier);
return mongoClientOptionsFactoryBean;
}
在我的情况下,mongo根本没有运行:) 请检查:
systemctl status mongod.service
并确保在重新启动服务器之前已启用:
systemctl enable mongod.service
这是否回答了您的问题?现在已经解决了,实际问题是实例连接到Mongo Atlas服务器所花费的时间超过了预期。实例在连接成功之前停止,并以连接超时问题结束。我保留此问题,因此如果有人面临此类问题,他们应该查看你好,Deepak,我看到了同样的例外。支持istio的服务(springboot应用程序)正在尝试调用同一集群中另一个pod中启用istio的mogodb。当启用istio的应用程序容器出现时,它表示已建立到Mongo的连接。但当发送请求时,会看到异常。您的任何输入。有两点:1.您的数据库是否已分片?2.您是否使用任何可能导致此问题的java注释e问题。我遇到了一个问题,我使用了@Indexed annotation,并且在删除后得到了解决。3.还要确保MongoDB/mongos服务正在运行。不,它没有切分。没有java特定的注释和索引。不,它没有切分,没有java特定的注释和索引。Mongod正在运行。在我的例子中,Istio服务网格已为mongodb容器启用(特使pxoxy)。在同一集群中,当来自Istio启用的pod的请求命中isto启用的mongodb pod时,出现该错误。以另一种方式,如何为集群内mongodb?配置服务网格。谢谢。它们位于相同的N/W和mongodb中(istioservice网格已启用)作为saperate容器运行。在服务定义中使用appProtocol和端口名为mongo mongodb后,它就可以工作了。