2017-12-11 31 views
0

Knexを汎用プールとともにクエリービルダーとして使用し、Pool ManagerをOracle 11.2データベース用に使用します。Knex/generic-poolとOracleを使用して接続プールを管理する方法

私たちが直面している問題は、Knex/generic-poolが接続を蓄積し始めてリサイクルできなくなることです。

Knex/Generic Poolにいくつかのパラメータを渡そうとしましたが、いくつかのポイントの後で接続を強制終了させましたが、うまくいかなかったようです。

Packgesバージョン:

  • Knex:v0.13.0
  • ORACLEDB:v1.13.1
  • ジェネリックプール: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

+0

ジェネリックプールにはいくつかの素晴らしい機能があるかもしれませんが、12.2クライアント(11.2 DBに接続するために使用できる)の軽量なノードoracledb接続プールのpingや、ファンとAC。 –

答えて

0

knex 0.14.2を試してみてください。プールに関するいくつかの問題が修正されました。また、トランザクションの作成/コミット/ロールバック時にデバッグ情報を追加してみてください。オープンなトランザクションはプールから接続を取り、トランザクションが終了するまでボットを解放します。 DEBUG = knex:*環境変数を設定して、プールとトランサセイションの実行アプリに関する情報を取得することができます。

+0

Thks、私は今日から私たちのホモロゲーション環境でKnex 0.14.2でテストしています。共有するデータが増えたときに返信します。 –

+0

Knex 0.14.2を試しましたが、それは助けになりませんでした。明らかに、プールマネージャはしばらくして接続をリサイクルできません。 –

関連する問題