本記事では、データベース接続問題を理解し、それを解消するための最適な方法について紹介します。こちらを読み進める前に、まずはコネクションプールの仕組みについて確認することをお勧めします。
データソース/ Yellowfin DBに接続できない
これは、接続自体を確立できない場合です。原因はいくつかありますが、一般的にエラーはドライバーから返されるので、通常は簡単に特定できます。(例:「Authentication falied:認証に失敗しました」、「Cannot find database:データベースが見つかりません」、「Cannot open port:ポートを開けません」、など)
このような状況では、接続詳細が正しく設定されているかの確認、Yellowfinがインストールされているサーバーからの接続が可能であり、JDBC経由で接続できることを確認することが不可欠です。
これらを確認する方法として、DBVisualizerやSQLSquirrelのような、無料のサードパーティ製クエリーツールを使用することで簡単に確認できます。
これらのツール内での接続テストも失敗するような場合は、データベース/ ネットワーク側に問題がありますので、データベース管理者に確認をしてください。
しかし、これらのテストが成功した場合は、さらに調査が必要になります。
データベース接続が不安定である
データソース接続が不安定なため、コネクションプールの強制的な更新が必要な場合があります。
これは役に立つかもしれませんが、回避策を試行するよりも、根本原因の解消に取り組むことが常に最善であることを忘れないでください。
デフォルトでは、接続は3時間ごとに更新され、これは接続設定で1時間に変更することができます。
しかし、次のいずれかの方法を使用することで、さらに頻繁に接続を更新することができます。
接続がタイムアウト する
接続がチェックアウトされていて、TimeOut パラメーター前に解放されていない場合は、強制的に閉じられます。
JDBC / Source ログには、「TimeoutExceeded:タイムアウト時間を超過しています」メッセージが表示されます。
これは通常、次の2つの状況で発生します。
- 現在接続は無効である。
データソース作成中は問題なかったが、動作しなくなった場合は、接続問題を解消してください。 - 接続が開いている時間が長すぎる。
これは、大容量レポートの実行や、スケジュールの更新により、データを返すのに時間がかかり過ぎている場合に発生します。この場合、いくつかの方法で対処できます。タイムアウトを長くする、またはコンテンツ(レポートなど)の内容を変更する(例:結果を制限する)ことで、素早くデータを返すようにします。スケジュールタスクに関連している場合は、セカンダリーコネクションプールを使用することもできます。
すべての接続が使用されている
接続の最大値を超えた場合は、それ以上の接続を作成することができません。この場合は、JDBC/ Source ログに「Maximum connections exceeded:接続最大数を超えています」や「No connections available. Waiting for a connection to be returned:利用可能な接続がありません」と表示されます。これには、いくつかの方法で対処できます。接続の最大値を増やしたり、必要以上に長く開いている接続(例:コンテンツが非効率的)や、一度に大量のスケジュールを実行していないかを確認します。スケジュールタスクに関連している場合は、セカンダリーコネクションプールを使用することもできます。
ご不明点や、接続に関する問題が発生している場合は、Yellowfinサポートチームへお問い合わせください。