3

この有用な記事に従って、W2k3 を実行している IIS 6 サーバー上の一部のアプリケーションで接続プール リークがあることを確認しました。

難しいのは、このサーバーの 700 人の開発者によって作成された 300 の Web サイトを 6 つのアプリケーション プールで提供していることです。その 50% は .NET 1.1 であり、CLR データ パフォーマンス カウンターに接続さえ表示されません。すべてが .NET 2.0 以降であれば、自分の側で接続が拡大するのを見ることができますが、そのスリムな監視ツールではうまくいきません。

私の 300 の Web サイトは、おそらく 100 以上のデータベースに接続しており、それらは Oracle、SQLServer、異常値の間に広がっているため、データベースからの接続が終了するのを見ることもできません。

今のところ、私の最善かつ唯一の計画は、最悪の犯罪者を大まかに二分探索することです. アプリケーション プールを強制終了し、そのプールからアプリケーションをゆっくりと削除します。プールを強制終了したときに、どの個々のアプリケーションで最も多くの接続が切断されるかがわかるまで続けます。しかし、これは生産用のボックスであり、私は継続的な雇用が好きなので、追跡方法としては数週間かかる可能性があります.

IIS接続プールに問い合わせて、その起源または所有者を知る方法を知っている人はいますか? 作成時にアタッチできる MSMQ トリガーはありますか? 私が見落としているばかげたことはありますか?

ケビン

(他のユーザーが検索で回答を見つけやすくするためにエラー コードを含めます: 例外: System.InvalidOperationException メッセージ: タイムアウトが発生しました。プールから接続を取得する前にタイムアウト期間が経過しました。これは、プールされたすべての接続が使用し、最大プール サイズに達しました。)

4

2 に答える 2

1

Bill Vaughn のこの最初の記事から始めてみてください。

于 2008-10-16T03:23:20.347 に答える
0

Todd Denlinger は素晴らしいクラスhttp://www.codeproject.com/KB/database/connectionmonitor.aspxを作成しました。このクラスは、Sql Server 接続を監視し、一定期間内に適切に破棄されなかった接続について報告します。サイトに配線すると、リークが発生したときに通知されます。

于 2011-09-17T02:49:08.567 に答える