MongoDB Atlas 连接不断下降

Posted

技术标签:

【中文标题】MongoDB Atlas 连接不断下降【英文标题】:MongoDB Atlas connection keeps dropping 【发布时间】:2020-07-07 13:21:41 【问题描述】:

我已将 MongoDB atlas 集成到我的 nodejs 应用程序中,但连接每隔几个小时就会断开一次,这会迫使应用程序重新启动。是否有办法处理代码中的重新连接以避免重新启动应用程序?

MongoNetworkError: 连接 2 到 67.156.445.93:27017 已关闭 在(匿名函数).forEach.op (/home/ubuntu/app/node_modules/mongodb/lib/cmap/connection.js:63:15) 在 Map.forEach () 在 TLSSocket.Connection.stream.on (/home/ubuntu/app/node_modules/mongodb/lib/cmap/connection.js:62:20) 在 TLSSocket.emit (events.js:203:15) 在 _handle.close (net.js:607:12) 在 TCP.done (_tls_wrap.js:388:7) 名称:'MongoNetworkError', [Symbol(mongoErrorContextSymbol)]: isGetMore: true

代码:

const log = console.log;
const mongoose = require('mongoose');
const link = ' URL of MONGOATLAS DB';

const connectDB = async () => 
  mongoose.connect(link, 
    useNewUrlParser: true,
    useUnifiedTopology: true
  );

  mongoose.connection.on('connected',() => 
      log(`MongoDB connection successful!`);
  );

  mongoose.connection.on('error',(err) => 
      log(`MongoDB connection error => $err!`);
  );

  mongoose.connection.on('disconnected', () => 
      log(`MongoDB connection diconnected`);
  );



module.exports = connectDB;

【问题讨论】:

【参考方案1】:

有一个名为 database.js 的文件。在里面放上这段代码:

const mongoose = require("mongoose");

const db = "mongodb://localhost:27017/yourDbName" //Or use atlas url.

const connectDB = async () => 
  try 
    await mongoose.connect(db, 
      useNewUrlParser: true,
      useUnifiedTopology: true,
      useCreateIndex: true,
      useFindAndModify: false
    );
    console.log("Mongo db Connected !");
   catch (err) 
    console.log(err.message);
    //exit process with failure
    process.exit(1);
  
;

module.exports = connectDB;

在你的 server.js 或 index.js 中:

const connectDB = require("./database.js");

【讨论】:

谢谢,我会试试看它是否有效。旁注 - 根据文档,如果我们使用“useUnifiedTopology”选项,那么应用程序应该会自动重新连接。我已经在使用这个选项,所以不知道为什么需要显式处理断开连接事件以重新连接。

以上是关于MongoDB Atlas 连接不断下降的主要内容,如果未能解决你的问题,请参考以下文章

使用mongo_dart连接到MongoDB Atlas

MongoDB Atlas 副本集名称

Mongodb Atlas 与 Grafana 的集成

MongoDB Atlas 连接在 Heroku for NodeJS 上不起作用

java mongo java driver 3.4.0及以上版本的MongoDB Atlas错误

如何将Django ORM连接到mongo atlas?