C# クライアント、C# WCF Web サービス レイヤー、SQL Server データベースを含む 3 層アプリケーションがあります。Web サービスは、ADO.NET を使用してデータベースに接続します。C# コードはすべて .NET Framework 2.0 を使用しています。
最近、お客様が当社のアプリケーションでストレス テストを実施しました。テスト中、Web サーバーは次のような多くのエラーを生成しました。
接続文字列 '...' のデータベースに接続できませんでした。タイムアウトになりました。操作が完了する前にタイムアウト期間が経過したか、サーバーが応答していません。
接続プールがいっぱいになったときに接続エラーをキャッチし、接続プールの外部で接続を取得しようとする方法があることは承知しています。また、調整が必要なクエリもいくつか見つかりましたが、それらは Web サーバーの接続タイムアウトを説明していません。
Web サーバーがデータベースへの接続でタイムアウトになった理由を突き止めようとしています。すべてのADO.NET パフォーマンス カウンターを有効にするように Web サーバーをセットアップしました。ただし、接続に必要な時間や接続タイムアウトなどに関連するものは何も表示されません。perfmon
理想的には、他の ADO.NET カウンターの横に接続時間をグラフ化できることです。
接続を取得する際に ADO.NET のパフォーマンスを監視する方法はありますか?
接続を開く試行のタイミングを計ることで、独自の「平均接続オープン時間」パフォーマンス カウンターを作成できると思いますが、既に存在するものを使用したいと思います。