如何使用Knex / generic-pool和Oracle管理连接池

时间:2017-12-11 11:08:08

标签: node.js oracle knex.js

我们将Knex与通用池一起用作我们的Oracle 11.2数据库的查询生成器和池管理器。

我们面临的问题是,有时Knex / generic-pool开始累积连接并且无法回收它们。

我试图将一些参数传递给Knex / Generic Pool以使它们在某些点之后终止连接,但看起来它没有用完。

Packges版本:

  • Knex:v0.13.0
  • Oracledb:v1.13.1
  • Generic Pool:v2.5.4

Knex配置:

{
    client: 'oracledb',
    connection: {
        user: DB_USER,
        password: DB_PASSWORD,
        host: `${DB_HOST}:${DB_PORT}`,
        database: DB_NAME
    },
    debug: true,
    fetchAsString: ['number', 'clob'],
    acquireConnectionTimeout: 843600000,
    pool: {
        min: 2,
        max: 150,
        acquireTimeoutMillis: 100000,
        evictionRunIntervalMillis: 120000,
        maxWaitingClients: 100,
        idleTimeoutMillis: 100000
    }
}

Openshift print with environment variable DEBUG="Knex:*" showing a lot of clients waiting for connection

1 个答案:

答案 0 :(得分:0)

尝试knex 0.14.2修复了一些与游泳池相关的问题。在创建/提交/回滚事务时,还尝试添加一些调试信息。打开的事务将从池中获取连接,并且bot会释放它直到事务结束。您可以使用DEBUG = knex:*环境变量集获取有关运行应用程序的池和transacions的信息。