簡體   English   中英

為什么在我的數據庫中創建了多個連接?

[英]Why are multiple connections being created in my database?

我正在 NextJs 中開發一個網站,並使用 MongoDB 作為數據庫。 此代碼連接到數據庫並將其保存在緩存中。

    import { MongoClient } from "mongodb";

    let cache = {};

    export default async function connect() {
      if (cache?.client?.isConnected()) {
        return cache;
      }
     
      const opts = {
        useNewUrlParser: true,
        useUnifiedTopology: true,
      };

      return MongoClient.connect(process.env.DATABASE_URL, opts).then((client) => {
        cache = {
          db: client.db("bd"),
          client,
        };
        return {
          client,
          db: client.db("bd"),
        };
      });
    }

我想這段代碼應該只創建一個連接,但它正在創建更多的連接。 如下圖所示,在我停止使用該網站后,創建了 18 個連接並降至 6 個。 為什么要創建多個連接? 你怎么把它變成一個?

在此處輸入圖像描述

這是我在列出用戶的路線之一上使用的代碼示例。

          ...
          const { db, client } = await connect();
          const { userThatMakeRequest } = req;
          const { group } = req.query;

          const users = await db
            .collection("user")
            .find(
              {
                roles: "team-user",
                "team.id": userThatMakeRequest?.team?.id,
                "group.id": group,
                hasAccess: true,
              },
              { projection: { password: 0 } }
            )
            .toArray();

          res.status(200).json({
            response: users || [],
          });

驅動程序為每個已知服務器創建 1 或 2 個連接以進行監控。 應用程序連接(用於滿足查詢和寫入的連接)是分開的。

如果您創建客戶端 object 並針對運行 MongoDB 4.4 的 3 節點副本集執行一次查詢,您最終將獲得 7 個總連接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM