最近、私はsqlデータベースのアクティビティを監視しました。アクティビティの監視で約400のプロセスが見つかりました。後で、物理的にもクリアされない接続文字列オブジェクト私は完全に閉鎖して処分しましたが、一度IISを停止すると、活動監視のプロセスがすべて消えてしまいます。私は、ウェブサーバー上のそれの影響については本当に心配ですSMSSからのすべての無用のプロセスが殺されることになるように、私は、アプリケーションプールからの私のすべての接続をきれいにすることができることを見出したが、SqlConnection.ClearPool()がWebサーバー(IIS)のパフォーマンスに与える影響
少し検索した後
。このアプローチがSMSSから役に立たないタスクを明らかにするであろうことは事実ですが、すべての要求に対して新しい接続が実際に作成されるべきです。
私のアプリケーションは、多くのリクエストを処理するはずのエンタープライズアプリケーションだと考えると、このアプローチを使用してIISサーバーをダウンさせることを恐れています。
接続文字列の値がすべての要求に対して完全に固定されていないことに注意してください。リクエスタ情報を取得する目的で、要求パラメータに応じてすべての要求でその "アプリケーション名" SQLアクティビティモニタリングとSQLプロファイラで。
は、このアプローチでのパフォーマンスの遅れが、私は私のログ戦略を変更する必要があるか、それはほんの少し遅くなりますように厳しいです私の事業範囲を考慮するか、私が他の単語での接続文字列値を修正する方が良いでしょう、そうすることは価値があります???
プールを操作しようとするとパフォーマンスが低下し、コードが接続をリークするという兆候です。プール内の多くの接続は問題ではなく、新しい接続要求がサーバーをすばやく取得することを意味します。彼らは何も消費しない*。一方、400のアクティブな接続は、コードが接続を閉じるのを忘れることを意味します。プールを忘れる。コードを確認してください –
プールを空にするには、接続文字列を変更します。そんなにしないでください。あなたはプールをクリアするべきではなく、ADO.Netはそれをうまく処理します。遅くなるのはIISではなく、データアクセスです。プールではなくデータベースを管理しているのはADO.Netです。 – Crowcoder
BTW接続文字列は接続とは関係ありません。彼らは単なる弦です。コネクションプーリング*はエンタープライズ機能です。コネクションができるだけ早く解放されれば、わずか20個のプールされたコネクションで400個のWebリクエストを処理できます。 –