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

从AWS自建MongoDB迁移至Atlas后出现pymongo ServerSelectionTimeoutError报错

故障排查与解决方案

核心问题:代码初始化逻辑不兼容MongoDB SRV连接模式

你原先适配自建MongoDB的初始化代码是将连接地址和端口分开传参,但Atlas的mongodb+srv开头的SRV连接串本身已经内置了所有集群节点地址、端口、连接参数信息,单独传入端口会覆盖SRV的解析结果,导致连接失败。

修复代码示例

# 直接传入完整SRV连接串即可,无需额外指定端口
MONGODB_URL = os.environ.get('MONGODB_URL', 'localhost')
# 移除单独的PORT参数传入
client = MongoClient(MONGODB_URL)

其他可能的故障排查点

  • 检查pymongo依赖是否完整:使用SRV连接需要额外安装dnspython依赖,执行以下命令安装全量依赖:
    pip install pymongo[srv]
    
  • 检查连接字符串正确性:
    • 确认用户名、密码中的特殊字符(如@/://)已做URL编码
    • 确认数据库名、连接参数无拼写错误
  • 网络连通性验证:
    登录ECS实例执行以下命令验证网络可达:
    1. 域名解析验证:nslookup mongodb-prod.zzl18.mongodb.net,确认能正常解析到IP地址
    2. 端口连通性验证:nc -zv mongodb-prod-shard-00-00.zzl18.mongodb.net 27017,依次测试所有分片节点的27017端口连通性
    3. 检查ECS所在安全组的出方向规则是否放开27017端口访问,VPC路由表、VPC对等连接配置是否正常生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 16:15:03