ER_CON_COUNT_ERROR: Too many connections knex and bookshelf

ER_CON_COUNT_ERROR: Too many connections knex and bookshelf

我有一个简单的休息 api,用 express、knex 和书架建造。

我正在用 Jmeter 做一些性能测试,我注意到如果我调用执行以下查询的 API 就没有问题:

public static async fetchById(id: number): Promise<DatasetStats> {
      return DatasetStats.where<DatasetStats>({ id }).fetch();
 }

DatasetStats 是书架模型

但是如果我将 Jmeter 设置为调用以下内容,我会收到一个错误:ER_CON_COUNT_ERROR:一分钟后连接过多:

import * as knex from 'knex';

@injectable()
export class MyRepo {
  private knex: knex;

  constructor() {this.knex = knex(DatabaseConfig); }

  async fetchResourcesList(datasetName: string): Promise<any> {
      return this.knex.distinct('resource').from(datasetName);
  }
}

问题可能是我为每个请求创建了一个 knex 对象?

是的。如果为每个请求创建新的 knex 实例,则无法控制与 mysql 数据库的并发连接总数。此外,您将无法重新使用 knex 连接池中已经打开的连接,因此在每次查询时打开到数据库的新 TCP 连接效率非常低。此外,如果您在查询后不销毁您的 knex 实例,连接将保持打开状态,直到一些空闲超时 + 应用程序将泄漏内存。