IIS 7.5-web.configの更新時に、重複しないリサイクルプロパティが無効になるのを無効にする


25

一部のリソースを排他的にロックしているサイトがあります。.NET Application_StartイベントとApplication_Endイベントを使用して、適切なタイミングでこれらのリソースのロックを取得および解放しました。これが適切に機能するためには、常に実行中のアプリケーションのインスタンスは1つだけです。

これを実現するにはDisable Overlapped Recycle、アプリケーションプールのプロパティをに設定しましたTrue。このプロパティは、アプリプールがリサイクルされるたびに新しいワーカープロセスが起動する前に、古いワーカープロセスが完全にシャットダウンすることを保証することになっています。これは、アプリプールがIISを介して手動で、アイドルタイムアウトに達した結果として自動的に、または特定の時間/時間間隔ルールに従って自動的にリサイクルされる場合は常に機能します。

ただし、サイトのweb.configが更新されても、このルールは適用されません-古いワーカープロセスがシャットダウンを完了する前に新しいワーカープロセスが起動します。これにより、悪いことが起こります。web.configが更新されたときにアプリプールをリサイクルしたいので、Disable Recycling for Configuration Changesプロパティを設定していますFalse。これは開発中に頻繁に発生します。

これは予想されるものですか、それともIISのバグですか?web.configを変更してもアプリプールがリサイクルされないように設定する唯一のオプションはありますか?構成を変更してからアプリプールをリサイクルするのを忘れると、多くの頭痛の種になると確信しているので、これはやめたいと思います。

更新:

より明確にするためstartに、古いワーカープロセスのシャットダウンが完了する前に新しいワーカープロセスイベントが呼び出された場合、古いワーカープロセスendイベントは呼び出されません-シーケンス外で発生することはなく、まったく発生しません。


web.configが更新されてから新しいワーカープロセスが開始されるまでにどのくらいかかりますか?
グレッグアスキュー

新しいワーカープロセスは、リサイクル後にサイトにアクセスしようとするとすぐに開始されます。つまり、迅速であれば1秒未満です。残っている場合、古いワーカープロセスの「シャットダウン」イベントは、リサイクル後20〜30秒かかります。
ジョン

同じ問題があります。重複があります
アンドリューリマー

11
web.configファイルを編集すると、appDomainがリロードされます。appDomainはAppPoolとは別です。web.configを変更しただけでは、新しいW3WPプロセスIDは表示されません。こちらをご覧くださいtreeloop.com/blog/iis-application-domain-and-pool-recycling
kheld

1
@kheldは絶対に正しいです(おそらくこれを答えとして追加してください)。これはappoolの重複ではなく、appDomainの重複です。これを停止できるとは思いませんが、変更時にアプリドメインのリサイクルを無効にできます。
サムコーガン

回答:


1

このMSDN投稿から:https : //blogs.msdn.microsoft.com/tess/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles/

したがって、コードデプロイプロセスの一部として、これらの変更のいずれかをデプロイするとプールがリサイクルされるように見えます。

即時リサイクル

  • Web.configの変更
  • Machine.configの変更
  • Global.asaxの変更
  • ビンディレクトリの変更
  • App_Codeの変更

/programming/302110/what-c​​auses-an-application-pool-in-iis-to-recycle から借用

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.