Web サーバーからデータベースへの接続を確認する最適な方法は何ですか?

Web サーバーからデータベースへの接続を確認する最適な方法は何ですか?

当社の IT 管理者は、ヘルス チェックとして使用するために、Web アプリケーションで API エンドポイントを要求しています。API のロジックは、Web サーバーがデータベースに接続できることを確認するために、単純なデータベース クエリを実行する必要があります。この API 呼び出しが失敗すると、Web サーバーの自動停止などがトリガーされるという考え方です。

これは間違いなく機能しますが、少し自家製のようです。これを実現するために、すぐに使用できるツールなどを使用するより良い方法はありますか? 私たちは Microsoft スタックを使用しているため、Web ボックスは IIS 8、データベースは SQL 2014 です。

答え1

提案どおりに実行することはできますが、"どこか" から定期的に API 呼び出しを行う必要があります。DB がダウンしてから次の ping で検出されるまでの間、望ましくない動作が依然として発生します。

もう 1 つの解決策は、グローバル ハンドラーでエラーをキャッチすることです (ASP.NET では、Global.asax ファイルでこれを行うことができます)。必要に応じて、エラーを調べて、かなり細かく設定できます。たとえば、DB への接続がタイムアウトした場合に 1 つのアクションを実行する、または接続は有効だがアクセス許可エラーがある場合は別のアクションを実行するなどです。DB 接続エラーは、他の何かが最初に処理しない限り、グローバル ハンドラーにのみ送信されることに注意してください。

提案: 「それに対して何をするか」という部分を、検出方法とは別のメカニズムにしてみてください。そうすれば、両方のアイデア、または 3 番目のアイデアを実装して、同じ結果のアクションを共有することもできます。

関連情報