深刻:testWhileIdleがtrue、validationQueryが設定されていないDruidは接続プールエラープロセスを使用します[Springフレームワークなし、JDK9、MYSQL8バージョンの使用]



Serious Testwhileidle Is True



ステートメントは、JDK9、データベースのMYSQL8バージョン、1.0.9Druidjarパッケージを使用しました

使用する druid-1.0.9.jar、次のように与えられます






これらの2行のエラーは、SpringBootフレームワークのxml構成がないため、フレームを使用せずに解決する方法です。

①最初にエラーの最初の行を解決します深刻:testWhileIdleがtrue、validationQueryが設定されていない元のドキュメントのプロパティは次のとおりです

driverClassName = com.mysql.cj.jdbc.Driver url = jdbc:mysql://localhost:3306/test?serverTimezone=UTC&characterEncoding=utf-8&useSSL=false username = root password = root

プロパティ構成ファイルにいくつかの構成を追加します



filters=stat initialSize=2 maxActive=300 maxWait=60000 timeBetweenEvictionRunsMillis=60000 minEvictableIdleTimeMillis=300000 validationQuery=SELECT 1 testWhileIdle=true testOnBorrow=false testOnReturn=false poolPreparedStatements=false maxPoolPreparedStatementPerConnectionSize=200

再実行


エラー2

情報:{dataSource-1}が初期化されました

これは情報のログです。ドルイドがログ印刷メカニズムを使用していることに問題はありません。これはエラーではありません。

接続プーリングは、実際には初期化にのみ使用される場合、遅延読み込みを使用します


用語集を添付するものもあります

validateQuery = 'SELECT 1'を使用して、接続が使用可能であることを確認します。SQLステートメントを使用します。

testWhileIdle = 'true'は、接続がアイドルコレクター接続(存在する場合)であるかどうかがテストされることを示します。テストが失敗した場合、接続はプールから削除されます。

testOnBorrow = 'false'貸し出し時に接続をテストしないでください。テストしないと、パフォーマンスに影響します。

timeBetweenEvictionRunsMillis = '30000'は、アイドル状態の接続コレクターの30秒ごとに1回実行されます

minEvictableIdleTimeMillis =リカバリ接続のアイドル状態の「1800000」プールから30分後、デフォルト値は30分です。

各コレクタースレッドに接続されているnumTestsPerEvictionRun = '3'は、ランタイムチェック中の接続数(存在する場合)がアイドル状態です。デフォルト値は3です。

説明:

構成timeBetweenEvictionRunsMillis = '30000'の後、アイドル接続コレクター(独立したスレッド)の30秒ごとに実行します。そして、接続が破壊のために30分以上アイドル状態の場合、各検査を接続する3つ。接続の破棄後、接続の数は、minIdleの数より少ない場合は、新しい接続では、メンテナンスminIdleの数以上であり、回線上の古いものと新しいものの交換です。

testWhileIdle = 'true'は30秒ごとを示し、コネクタ3を削除します。validationQuery= 'SELECT 1'SQLテストを使用している場合、接続テストの破棄は失敗します。接続が破棄された後、接続の数は、新しい接続のminIdleの数よりも少なくなります。

testOnBorrow = 'false'は、デフォルト値がtrueであるため、構成する必要があります。 falseは、接続プールから取得されるたびに、validationQuery = 'SELECT 1'SQLテストで実行する必要がないことを意味します。構成が真であり、パフォーマンスに非常に大きな影響を与える場合、パフォーマンスは7〜10倍低下します。 falseとして構成する必要がある場合。

30秒ごとに、接続のnumTestsPerEvictionRun(この場合は3がデフォルト)を削除し、「SELECT1」を発行します。テストされていないテスト済みのSQLステートメントは「使用済み」であり、アイドル状態のままです。接続が30分間アイドル状態になると、破棄されます