druid接続異常をキャッチできない 既知の問題
Druidが接続異常をキャッチできない場合は、以下の回避策を試してください。
- Druidの設定ファイル:Druidの設定ファイル(application.propertiesまたはapplication.ymlなど)で接続例外関連のプロパティが正しく設定されていることを確認します。たとえば、Spring Bootアプリケーションの場合は、次のプロパティを使用して接続例外処理を設定できます。
spring.datasource.druid.testWhileIdle=true
spring.datasource.druid.validationQuery=SELECT 1
spring.datasource.druid.validationQueryTimeout=3
spring.datasource.druid.timeBetweenEvictionRunsMillis=60000
spring.datasource.druid.minEvictableIdleTimeMillis=300000
spring.datasource.druid.maxEvictableIdleTimeMillis=600000
- データベース接続プールの設定を確認: Druid の設定との整合性と、接続プール関連のプロパティが正しく設定されていることを確認する。例: Druid 接続プールの場合は、以下のプロパティを使用して接続プールの検証ステートメントとタイムアウト期間を設定します。
druid.pool.validationQuery=SELECT 1
druid.pool.validationQueryTimeout=3000
- アプリのコードを確認してください:アプリ内で接続異常が正しく処理されているかどうかを確認します。 try-catch ステートメントを使用して接続異常を捕捉し、ログの記録や再試操作など、適切な処理を実施できます。
- データベースサーバの設定確認: データベースサーバの設定がDruidコネクションプールの接続を許可しており、他の制限やファイアウォール設定による接続のブロックがないことを確認する
それでも解決できない場合は、Druid のコネクションプールのログを確認すると、エラー情報と例外のスタックを確認でき、問題の特定と解決に役立てられます。