6

負荷がかかっているときに失敗する MVC3 アプリケーションからのこのエラーを調査しています。

「プールから接続を取得する前にタイムアウト時間が経過しました。これは、プールされたすべての接続が使用中で、最大プール サイズに達したために発生した可能性があります。」

アプリケーションはリポジトリ パターンと Entity Framework を使用していますが、接続が適切に閉じられていないように思います。SQL Server でプールされた接続の数を監視できるようにしたいと考えています。調べてみると、Perfmon でこれらのカウンターを使用できると思います。

  • .NET CLR データ
  • SQLServer 用の .NET データ プロバイダー

ただし、両方とも表示され、無効化/グレー表示されています。

サーバー上で Perfmon を直接実行しており、ISS と SQL Server の両方がサーバー上で実行されています。これらのカウンターが利用できない理由はありますか?

また、SQL プロファイラーを使用してプールされた接続を監視しようとしましたが、AuditLogin で EventSubClass 列を使用できません。

4

2 に答える 2

1

SQL 側からこれを確認する唯一の実行可能な方法は、ログイン イベント トレースを設定することです。「イベント サブクラス」列は、プールされた接続を使用してイベントが発生したかどうかを示します。これにより、ホスト、ログイン、およびアプリケーション名を関連付けて、掘り下げを続けることができます。

監査ログイン イベント クラス

アプリケーション側では、perfmon で「.NET DATA PROVIDER FOR SQL SERVER」のパフォーマンス カウンターを使用できます。

ADO.NET のパフォーマンス カウンター

于 2015-10-10T16:12:40.027 に答える