3

ASP.NET Web アプリケーションを使用していますが、次のような刺激的なエラーが時々返されます。

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

私のマネージャーは、これはSqlConnectionアプリケーション内で閉じられていないことが原因ではないかと疑っています。したがって、現在、アプリケーション内のすべてのコード ファイルを手動でチェックして、接続が開いたままになっていないかどうかを確認しています。

このエラーの原因を見つけるためのより迅速な解決策はありますか?

4

1 に答える 1

1

さまざまなオプションの束:

  • Resharper とその「パターンによる検索」(「構造検索」とも呼ばれます) を使用します: http://blogs.jetbrains.com/dotnet/2010/04/introducing-resharper-50-structural-search-and-replace/

  • FxCop または Roslyn 用の小型の構文ツリー ウォーカーを作成して、同じ検索を実行します (基本的に、新しい SqlConnection は破棄されません)。

  • SqlConnection のラッパー クラスを作成し (想像以上に一般的です)、そこで開いている/閉じている接続を追跡します。

  • WinDbg を「ライブ」または理想的にはエラー アプリケーションにアタッチし、ヒープ オブジェクトを元の場所に戻します。

  • オブジェクト作成用の呼び出しスタックを提供する適切なプロファイラー (SciTech はきちんとしたものです) を入手してください。

于 2012-10-02T05:41:36.857 に答える