【问题标题】:Is it neccessary to close mongodb connection after manipulating or fetching data?操作或获取数据后是否需要关闭 mongodb 连接?
【发布时间】:2022-01-26 18:34:56
【问题描述】:

我有以下代码,它可以正常工作,但我应该在返回数据后关闭连接吗?如果是,那么如何关闭连接?

// project.db.js

 const { MongoClient, ObjectId } = require("mongodb");
 const { mongo_uri, dbName } = require("../config/constants");

// connect method
 function connection() {
    return MongoClient.connect(mongo_uri);
 }
// async function which read data
  exports.allProject_tasks = async (space_id) => {
        try {
        const result = await connection();
        const db = await result.db(dbName);
        const payload = await db
       .collection("tasks")
         .find({
            user_space_id: ObjectId(space_id),
          })
     .toArray();
     return payload;
 } catch {
    return 400;
}
  };

【问题讨论】:

    标签: node.js mongodb express


    【解决方案1】:

    当从应用程序端完成工作以释放数据库服务器端分配的连接资源时,最好关闭连接(mongoDB为每个连接分配约1MB,这意味着如果您打开1000个连接,您的服务器将仅分配约1GB用于连接),如果您让资源在连接超时后释放,如果超时较高,则可能会在服务器处于高负载状态时导致问题。

    【讨论】:

    • @RD2D 感谢您的回答,但在我的情况下,我应该编写一个单独的函数来关闭连接吗?
    • @PaimanRasoli :在高负载多线程应用程序中,连接在连接池中打开,然后由与数据库交互的所有函数重用,仅在不需要它们时关闭,所以这取决于你根据您的应用程序的工作方式来决定您是否将在单独的函数中执行。
    猜你喜欢
    • 1970-01-01
    • 2014-06-28
    • 2013-03-04
    • 2020-11-22
    • 1970-01-01
    • 2013-09-20
    • 1970-01-01
    • 2020-09-22
    • 2020-07-21
    相关资源
    最近更新 更多