webentwicklung-frage-antwort-db.com.de

IIS App-Pools - Stopp/Start vs. Recycling

Ich habe festgestellt, dass der recycelte Arbeitsprozess bei einer meiner Produktionsweb-Apps beim manuellen Recyceln eines App-Pools mehr als 60 Sekunden dauern kann, um vollständig zerstört zu werden, je nachdem, ob er im Task-Manager angezeigt wird. Wenn ich jedoch den App-Pool vollständig anhalte, wird der Arbeitsprozess fast sofort abgebrochen - innerhalb von 1-2 Sekunden.

Meine Frage ist also zweifach:

a) Warum dauert es so lange, den Prozess zu zerstören (und sinnvollererweise die von ihm verwendeten/gesperrten Ressourcen freizugeben), wenn der App-Pool recycelt wird und nicht gestoppt wird? und

b) Angenommen, ich habe angehalten, dass der Verkehr nicht an den Server geleitet wird. Gibt es einen Grund, NICHT zu stoppen/zu starten anstatt zu recyceln?


Bearbeiten:
Um dies zu klären, stoppe ich, bevor ich den App-Pool rezykliere oder stoppe, den Datenverkehr an den fraglichen Server (der Server befindet sich in einem Cluster mit Lastausgleich und ich entferne den Server aus dem Load Balancer). Theoretisch sollte es zu der Zeit keine Anfragen an die Website geben, wenn ich etwas für den App-Pool tue.


Teil Deux bearbeiten:
Nachdem ich Igal's Link gelesen habe, scheint es mir ziemlich offensichtlich zu sein, was passiert. Beim Recycling des App-Pools wird der neue Prozess gestartet. Da jedoch keinerlei Datenverkehr stattfindet, wird der neue Prozess nicht als funktionsfähig registriert, sodass der alte Prozess nicht bis zum Timeout (90) beendet wird Sekunden).

Mit diesem Wissen ist mir klar, dass die "Recycle" -Funktion speziell für die Verwendung auf einem Live-Server auf Midstream vorgesehen ist. Da ich zuvor manuell den Datenverkehr entleere, sollte ich stattdessen Stop/Start verwenden.

32
Daniel Schaffer

a) wegen überlappter Wiederverwertung . Es gibt eine Zeitspanne, die der "alte" Prozess auf den Start des neuen Prozesses wartet.

b) Nein. Soweit ich weiß.

25
Igal Serban

Wenn ein Recycle ordnungsgemäß abgerufen wird, können alle vorhandenen Anforderungen abgeschlossen werden, und der Anwendungspool wird erneut verwendet. Ein Stopp beendet ihn einfach in dem Moment, in dem Sie ihn stoppen.

13
Mitchel Sellers

Nach diesem Link ,

Stoppen - Durch das Stoppen eines Anwendungspools weisen Sie alle IIS - Arbeitsprozesse an, die diesem Anwendungspool dienen, das Herunterfahren von Und das Starten weiterer Arbeitsprozesse bis Der Anwendungspool wird erneut gestartet. Dadurch wird ein ordnungsgemäßes Herunterfahren der Worker-Prozesse eingeleitet, wobei jeder Worker-Prozess versucht, Alle seine Anforderungen zu leeren und dann zu beenden.

Wenn ein Worker-Prozess nicht innerhalb der Zeit beendet wird, die Von der Konfigurationseigenschaft shutdownTimeLimit im Element processModel Der Definition des jeweiligen Anwendungspools angegeben ist (Standard: 90 Sek.), WAS wird es zwangsweise beenden (dies geschieht nicht, wenn ein nativer Debugger angehängt ist).

Daher ist das Stoppen eines Anwendungspools eine Unterbrechungsaktion, durch die Entladen von ASP.NET-Anwendungsdomänen, untergeordneten FastCGI-Prozessen Und den Verlust eines beliebigen In-Process-Anwendungsstatus verursacht.

Recycling - Durch das Recycling eines Anwendungspools werden alle derzeit ausgeführten IIS - Arbeitsprozesse in diesem Anwendungspool ordnungsgemäß heruntergefahren. Wird heruntergefahren. Im Gegensatz zum Anhalten des Pools wird jedoch der neue IIS Worker-Prozesse können bei Bedarf gestartet werden, um nachfolgende Anforderungen zu bearbeiten.

Das Wiederherstellen eines Anwendungspools ist ein guter Weg, um das Zurücksetzen des Anwendungsstatus Und alle durch die IIS Worker Zwischengespeicherten Prozesse zurückzusetzen, die nicht automatisch aktualisiert werden (meist .____.] Registrierungsschlüssel), ohne den Betrieb des Servers zu stören. Mit diesem Ist das Recycling des Anwendungspools in den meisten Fällen eine gute Alternative zu einem IISRESET.

0
natenho