C#クライアント、C#WCF Webサービス層、およびSQL Serverデータベースを持つ3層アプリケーションがあります。 Webサービスは、ADO.NETを使用してデータベースに接続します。すべてのC#コードは.NET Framework 2.0を使用しています。ADO.NET接続のオープン時間の監視
最近、顧客がアプリケーションに対してストレステストを実施しました。テスト中、Webサーバーは次のような多くのエラーを生成しました。
接続文字列 '...'のデータベースに接続できませんでした。タイムアウトが切れました。操作が完了する前にタイムアウト時間が経過したか、サーバーが応答していません。
接続プールがいっぱいになったときに接続エラーをキャッチして、接続プール外の接続を取得しようとする方法があります。チューニングが必要なクエリもいくつか見つかりましたが、Webサーバーの接続タイムアウトは説明していません。
私たちは、Webサーバーがデータベースへの接続にタイムアウトした理由を理解しようとしています。 ADO.NET performance countersのすべてを有効にするようにWebサーバーをセットアップしました。しかし、接続に必要な時間や接続タイムアウトなどは何も表示されません。理想的には、他のADO.NETカウンターの隣のperfmon
に接続時間をグラフで表示することができます。
接続を取得する際のADO.NETのパフォーマンスを監視する方法はありますか?
私は、接続を開くタイミングを試すことで独自の「平均接続オープンタイム」パフォーマンスカウンタを作成できると思いますが、すでに存在するものを使用したいと思います。
この点についてSQLプロファイラは役に立ちますか? –
@MrMose:プロファイラはいくつかの問題のクエリを見つけるのを助けました。しかし、私は接続時間を監視していつ立ち上がるのか、そしてタイムアウトを開始するのかを確認するための具体的なものが必要です。 –