Recycling
Beim Recycling * startet IIS normalerweise einen neuen Prozess als Container für Ihre Anwendung und übergibt dann den alten an ShutdownTimeLimit, damit er sich von selbst löst, bevor er beendet wird.
* - In der Regel: Siehe DisallowOverlappingRotation / Einstellung "Überlappendes Recycling deaktivieren"
Es ist insofern destruktiv , als der ursprüngliche Prozess und alle seine Statusinformationen verworfen werden. Wenn Sie den Sitzungsstatus außerhalb des Prozesses verwenden (z. B. State Server oder eine Datenbank oder sogar ein Cookie, wenn Ihr Status winzig ist), können Sie dies umgehen.
Es ist jedoch standardmäßig überlappend, was bedeutet, dass die Dauer eines Ausfalls minimiert wird, da der neue Prozess gestartet und an die Anforderungswarteschlange angehängt wird, bevor der alte Prozess mitteilt, dass Sie [ShutdownTimeLimit] Sekunden Zeit haben, um fortzufahren.
die Einstellungen
Zu Ihrer Frage: Alle Einstellungen auf dieser Seite steuern in irgendeiner Weise das Recycling. "Herunterfahren" kann als "proaktives Recycling" bezeichnet werden - wenn der Prozess selbst entscheidet, wann es Zeit ist, und ordnungsgemäß beendet wird.
Reaktives Recycling ist der Ort, an dem WAS ein Problem erkennt und den Prozess durchführt (nachdem ein geeignetes Ersatz-W3WP erstellt wurde).
Hier sind einige Dinge, die zum Recycling der einen oder anderen Form führen können:
- Ein ISAPI entscheidet, dass es ungesund ist
- Jedes Modul stürzt ab
- Leerlauf-Timeout
- CPU-Begrenzung
- Anpassen der Eigenschaften des App-Pools
- als Ihre Mama kann an einem Punkt geschrien haben: „Hör auf Kommissionierung es, oder es wird nie besser!“
- "Ping" -Fehler * pingt nicht wirklich per se, da es eine Named Pipe verwendet - mehr "Life Detection"
- Alle Einstellungen im obigen Screenshot
Was ist zu tun:
Allgemein:
Deaktivieren Sie Leerlauf-Timeouts . 20 Minuten Inaktivität = Boom! Neuer Prozess bei der nächsten eingehenden Anfrage. Setzen Sie das auf Null.
Regelmäßiges Zeitintervall deaktivieren - Der 29-Stunden-Standard wurde von verschiedenen Parteien als "verrückt", "ärgerlich" und "clever" beschrieben. Tatsächlich sind nur zwei davon wahr.
Optional können Sie DisallowRotationOnConfigChange aktivieren (oben: Deaktivieren von Reycling für Konfigurationsänderungen ), wenn Sie nicht aufhören können, damit zu spielen. Auf diese Weise können Sie die Einstellungen für den App-Pool ändern, ohne den Arbeitsprozessen sofort mitzuteilen, dass er beendet werden muss. Sie müssen den App-Pool manuell recyceln, damit die Einstellungen wirksam werden. Auf diese Weise können Sie die Einstellungen voreinstellen und sie dann in einem Änderungsfenster über Ihren Recycle-Prozess anwenden.
Lassen Sie Ping generell aktiviert . Das ist dein Sicherheitsnetz. Ich habe Leute gesehen, die es ausgeschaltet haben, und dann hängt die Site manchmal auf unbestimmte Zeit, was zu Panik führt. Wenn die Einstellungen für Ihre scheinbar sehr, sehr, sehr langsam reagierende App zu aggressiv sind, setzen Sie sie ein wenig zurück und sehen, was Sie bekommen, anstatt es auszuschalten. (Es sei denn, Sie haben das automatische Absturzdumping für W3WPs über Ihren eigenen Überwachungsprozess eingerichtet.)
Das ist genug, um einen wohlerzogenen Prozess für immer leben zu lassen. Wenn es stirbt, wird es ersetzt. Wenn es hängt, sollte der Ping-Vorgang beendet werden und ein neuer sollte innerhalb von 2 Minuten gestartet werden (standardmäßig; der schlimmste Fall sollte sein: bis zur Ping-Frequenz + Ping-Timeout + Startzeitlimit, bevor die Anforderungen wieder funktionieren).
Die CPU-Begrenzung ist normalerweise nicht interessant, da sie standardmäßig deaktiviert ist und auch so konfiguriert ist, dass sie sowieso nichts tut. Wenn es so konfiguriert wäre, dass der Prozess abgebrochen wird, wäre dies sicher ein Recycling-Auslöser. Lass es aus. Hinweis: In IIS 8.x wird die CPU-Drosselung ebenfalls zu einer Option.
Ein (IIS) AppPool ist keine (.Net) AppDomain (kann jedoch eine oder mehrere enthalten)
Aber ... dann stoßen wir auf .Net-Land und AppDomain-Recycling, was ebenfalls zu einem Zustandsverlust führen kann. (Siehe: https://blogs.msdn.microsoft.com/tess/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles/ )
Kurzversion, Sie tun dies, indem Sie eine web.config-Datei in Ihrem Inhaltsordner berühren (wieder mit der Auswahl!) Oder indem Sie einen Ordner in diesem Ordner oder eine ASPX-Datei erstellen, oder ... andere Dinge ... und das ist ungefähr destruktiv wie ein App-Pool-Recycling, abzüglich der Startkosten für systemeigenen Code (es handelt sich lediglich um ein Konzept mit verwaltetem Code (.Net), sodass hier nur verwalteter Code vorkommt).
Antivirus kann dies auch auslösen, wenn web.config-Dateien gescannt werden, wodurch eine Änderungsbenachrichtigung ausgelöst wird und ...