You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot连接MongoDB Atlas失败求助:昨日正常今日报错

Spring微服务连接MongoDB Atlas抛出MongoSocketReadException异常

我有一个关联MongoDB Atlas数据库的Spring微服务应用,昨日运行正常,但今日出现以下连接错误:

2022-11-24 00:29:33.267  INFO 5588 --- [ngodb.net:27017] org.mongodb.driver.cluster               : Exception in monitor thread while connecting to server ac-bl3jxj4-shard-00-02.wt2swod.mongodb.net:27017

com.mongodb.MongoSocketReadException: Exception receiving message
    at com.mongodb.internal.connection.InternalStreamConnection.translateReadException(InternalStreamConnection.java:707) ~[mongodb-driver-core-4.4.2.jar:na]
    at com.mongodb.internal.connection.InternalStreamConnection.receiveMessageWithAdditionalTimeout(InternalStreamConnection.java:579) ~[mongodb-driver-core-4.4.2.jar:na]
    at com.mongodb.internal.connection.InternalStreamConnection.receiveCommandMessageResponse(InternalStreamConnection.java:415) ~[mongodb-driver-core-4.4.2.jar:na]
    at com.mongodb.internal.connection.InternalStreamConnection.sendAndReceive(InternalStreamConnection.java:342) ~[mongodb-driver-core-4.4.2.jar:na]
    at com.mongodb.internal.connection.CommandHelper.sendAndReceive(CommandHelper.java:96) ~[mongodb-driver-core-4.4.2.jar:na]
    at com.mongodb.internal.connection.CommandHelper.executeCommand(CommandHelper.java:44) ~[mongodb-driver-core-4.4.2.jar:na]
    at com.mongodb.internal.connection.InternalStreamConnectionInitializer.initializeConnectionDescription(InternalStreamConnectionInitializer.java:131) ~[mongodb-driver-core-4.4.2.jar:na]
    at com.mongodb.internal.connection.InternalStreamConnectionInitializer.startHandshake(InternalStreamConnectionInitializer.java:73) ~[mongodb-driver-core-4.4.2.jar:na]
    at com.mongodb.internal.connection.InternalStreamConnection.open(InternalStreamConnection.java:182) ~[mongodb-driver-core-4.4.2.jar:na]
    at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.lookupServerDescription(DefaultServerMonitor.java:188) ~[mongodb-driver-core-4.4.2.jar:na]
    at com.mongodb.internal.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:152) ~[mongodb-driver-core-4.4.2.jar:na]
    at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]
Caused by: java.net.SocketException: Socket is closed
    at java.base/java.net.Socket.setSoTimeout(Socket.java:1154) ~[na:na]
    at java.base/sun.security.ssl.BaseSSLSocketImpl.setSoTimeout(BaseSSLSocketImpl.java:637) ~[na:na]
    at java.base/sun.security.ssl.SSLSocketImpl.setSoTimeout(SSLSocketImpl.java:75) ~[na:na]
    at com.mongodb.internal.connection.SocketStream.read(SocketStream.java:133) ~[mongodb-driver-core-4.4.2.jar:na]
    at com.mongodb.internal.connection.InternalStreamConnection.receiveResponseBuffers(InternalStreamConnection.java:718) ~[mongodb-driver-core-4.4.2.jar:na]
    at com.mongodb.internal.connection.InternalStreamConnection.receiveMessageWithAdditionalTimeout(InternalStreamConnection.java:576) ~[mongodb-driver-core-4.4.2.jar:na]
    ... 10 common frames omitted

我的application.properties配置如下:

spring.data.mongodb.uri=mongodb+srv://denver:*****@product-service.wt2swod.mongodb.net/?retryWrites=true&w=majority
spring.data.mongodb.database=product-service

eureka.client.fetch-registry=true
eureka.client.service-url.defaultZone=http://localhost:8761/eureka

spring.application.name=product-service
server.port=0

已尝试添加以下配置排除Mongo自动类,但问题未解决:

@SpringBootApplication(exclude = {
  MongoAutoConfiguration.class, 
  MongoDataAutoConfiguration.class
})

希望得到解决该连接异常的有效方法。


解决方法

  • 检查MongoDB Atlas IP白名单
    登录Atlas控制台,进入目标集群的「Network Access」页面,确认应用服务器的公网IP已加入白名单。可临时添加0.0.0.0/0测试是否为IP限制问题,生产环境需及时收回该权限。

  • 验证连接URI正确性
    从Atlas控制台重新生成标准连接字符串,核对密码(注意特殊字符需转义)、集群地址、数据库名称是否与配置文件完全一致,避免因URI拼写错误导致连接失败。

  • 排查网络连通性
    在应用服务器上执行命令测试端口连通性:

    telnet ac-bl3jxj4-shard-00-02.wt2swod.mongodb.net 27017
    # 或使用nc命令
    nc -zv ac-bl3jxj4-shard-00-02.wt2swod.mongodb.net 27017
    

    确认端口未被防火墙、代理或运营商拦截。

  • 调整MongoDB连接参数
    在URI中添加超时与连接池配置,避免套接字因超时被关闭:

    spring.data.mongodb.uri=mongodb+srv://denver:*****@product-service.wt2swod.mongodb.net/?retryWrites=true&w=majority&connectTimeoutMS=30000&socketTimeoutMS=60000&maxPoolSize=20
    
  • 恢复Spring Mongo自动配置
    移除@SpringBootApplication中的排除配置,让Spring自动初始化Mongo连接上下文——手动排除会导致连接池等核心组件无法正常加载。

  • 检查Atlas集群状态
    登录Atlas控制台查看集群是否有维护、宕机或性能告警,确认服务端无异常。


内容的提问来源于stack exchange,提问作者oussama dariaoui

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 16:30:45