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

MongoNetworkError连接超时问题求助(ETIMEDOUT 3.108.0.179:27017)

MongoDB连接超时及连接池重置问题排查与解决

问题描述

此前运行正常的多MongoDB数据库连接函数,3-4周前突然出现连接超时及连接池重置错误。已将自身IP加入白名单,甚至暂时允许所有IP访问,但启动Node服务器时仍会触发该错误,在MongoSupport提问未获回复,寻求技术支持。

完整错误信息

MongoNetworkError: connect ETIMEDOUT 3.108.0.179:27017
    at connectionFailureError (G:\ALIAN PROJECT\alian-hub-api\node_modules\mongodb\lib\cmap\connect.js:367:20)
    at TLSSocket.<anonymous> (G:\ALIAN PROJECT\alian-hub-api\node_modules\mongodb\lib\cmap\connect.js:290:22)
    at Object.onceWrapper (node:events:629:26)
    at TLSSocket.emit (node:events:514:28)
    at TLSSocket.emit (node:domain:489:12)
    at emitErrorNT (node:internal/streams/destroy:151:8)
    at emitErrorCloseNT (node:internal/streams/destroy:116:3)
    at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
  cause: Error: connect ETIMEDOUT 3.108.0.179:27017
      at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1495:16) {
    errno: -4039,
    code: 'ETIMEDOUT',
    syscall: 'connect',
    address: '3.108.0.179',
    port: 27017
  },
  connectionGeneration: 0,
  [Symbol(errorLabels)]: Set(1) { 'ResetPool' }
}

连接配置代码

const connection = await mongoose.createConnection(`${process.env.MONGODB_URL}/${db}`, { maxPoolSize: 60, useNewUrlParser: true, connectTimeoutMS: 50000 })

connection.on('connected', () => {
  logger.info(`MONGO CONNECTION ${db}: connected`);
  console.log(`MONGO CONNECTION ${db}: connected`);
  resolve(connection);
});

//...Other handers for connection

connection.on('error', (error) => {
  logger.error(`MONGO CONNECTION: error >> ${JSON.stringify(error)}`)
});

排查与解决建议

  • 网络连通性验证:在服务器上执行 telnet 3.108.0.179 27017 或 nc -zv 3.108.0.179 27017,确认端口是否能正常连通。若不通,排查云服务商防火墙规则、服务器出站端口限制或本地网络运营商策略。
  • 依赖版本兼容性检查:查看package.json中mongoose和mongodb驱动版本,若近期有更新,回退到之前稳定版本测试。执行npm list mongoose mongodb对比版本记录,确认是否因版本升级引发兼容性问题。
  • 连接池配置优化:当前maxPoolSize:60,多数据库连接时总连接数可能超过MongoDB实例上限。尝试将maxPoolSize降至20-30,同时添加socketTimeoutMS: 60000配置,避免网络波动导致的超时。
  • 完善连接重试机制:在连接配置中加入autoReconnect: true、serverSelectionTimeoutMS: 30000等参数,确保连接失败后自动重试。示例调整后的配置:
    const connection = await mongoose.createConnection(`${process.env.MONGODB_URL}/${db}`, {
      maxPoolSize: 30,
      useNewUrlParser: true,
      connectTimeoutMS: 50000,
      socketTimeoutMS: 60000,
      serverSelectionTimeoutMS: 30000,
      autoReconnect: true
    })
    
  • MongoDB实例状态排查:登录管理后台查看实例CPU/内存占用、连接数是否超限,检查实例日志是否有连接拒绝记录,确认是否因资源不足导致连接失败。
  • DNS解析验证:若MONGODB_URL使用域名,执行nslookup或dig命令确认解析结果是否正确,尝试直接用IP地址替换域名测试,排除DNS缓存或解析错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 07:54:54