NodeJs 应用程序内存使用量正在增加

问题描述 投票:0回答:1

我使用nodejs、expressjs和mongoose创建了具有多租户结构的应用程序,当我启动应用程序时,其进程的内存使用情况很正常,但随着时间

few hours
和使用情况
few users
,内存增加了很多,达到了2-3GBps偶数用户并没有那么多
5 users

方法论

我通过使用

mongoose
启动与数据库的连接来创建多租户架构,而无需指定数据库并随后利用 mongoose 对象,并检查每个请求中的租户,然后使用相应的模型(如果已创建),如果没有!创建并使用它,

使用Token请求>>验证Token用户并检查租户>>使用|创建模型>>查询数据库>>发回响应

猫鼬模型类

export class Category {
  private db = "";
  private model = "Category";
  private collection = "categories";
  constructor(db: string, model?: string, collection?: string) {
    this.db = db;
    this.model = model || this.model;
    this.collection = collection || this.collection;
  }

  schema = new Schema<ICategoryBaseDocument>(
    {
      // model schema 
    },
    { 
      // model options
     }
  );

    Model = (): ICategoryModel => { // method to get or create model
    const db = mongoose.connection.useDb(dbConnection(this.db).name); // this function will return the name of the database for that specific tenant 
    if (db.modelNames().indexOf(this.model) !== -1) {
      return db.models[this.model] as ICategoryModel;
    } else {
      return db.model<ICategoryBaseDocument, ICategoryModel>(
        this.model,
        this.schema,
        this.collection
      );
    }
  };
}

数据库连接

数据库是一般的猫鼬连接,应用程序启动时没有引用任何数据库,并使用该连接在已创建的模型的数据库之间进行交换

mongoose.connect(`mongodb://${server}:${port}`, {});

我觉得这种方法不是最佳实践,它是内存使用背后的原因,所以请提供任何建议或想法如何修复它

node.js mongodb mongoose
1个回答
0
投票

您使用的 Mongoose 版本是什么?如果您没有使用 8.8.2 或更高版本,内存使用情况可能是由于 https://github.com/Automattic/mongoose/pull/15039.

中修复的问题造成的
© www.soinside.com 2019 - 2024. All rights reserved.