1

私のアプリケーションでは、プールされた接続のリークに問題があります。

約 3 週間ごとにプールの制限がなくなり、アプリケーション サーバーを再起動する必要があります。アプリケーションのグループ '.Net Data provider for Sql server' のパフォーマンス カウンターを観察すると、カウンターの値がNumbeOfInactiveConnectionPools短時間 (約 30 秒) 1 増加し、元の値に戻ることがあることに気付きました。時折、1 増加し、減少しないことがあります。長期値は 1 になります。その後、1 ずつ増加し続け、元に戻ります。その結果、現在の長期値は 2 です。

これが接続が漏れている理由ですか?このカウンターが何を意味し、接続プールが非アクティブになるタイミングを説明してもらえますか? ここで見つけたカウンターの説明を見つけましたが、貧弱です。

4

1 に答える 1

0

NumberOfInactiveConnectionPoolsは、現在の接続の数とは何の関係もないようです。アクティブな接続プールの数とアクティブな接続の数を監視する必要があります。

アプリケーションサーバーを再起動する必要がある理由がわかりません(アプリはIISでホストされていますか?)-現在、無料の接続がない可能性があります-しかし、時間内に接続する必要があります。

残念ながら、プールサイズを超えると、アプリケーションの設計が不十分になる可能性があります。例外が常にコードの特定の部分によってスローされているのか、それともランダムに発生しているのかを確認する必要があります。

常に同じコードである場合は、この機能を再設計する必要があります。ランダムな場合は、接続文字列のMaxPoolSizeを大きい数値に変更します。

于 2012-09-13T22:06:25.057 に答える