2008-12-24 14 views
30

Ich habe festgestellt, dass bei einer meiner Produktions-Web-Apps, wenn ich einen App-Pool manuell recycle, der recycelte Arbeitsprozess mehr als 60 Sekunden dauern kann, bis er vollständig zerstört ist. basierend darauf, es im Task-Manager zu sehen. Wenn ich jedoch den App-Pool vollständig stoppe, geht der Arbeitsprozess fast augenblicklich vonstatten - innerhalb von 1-2 Sekunden.IIS-App-Pools - Stopp/Start vs Recycle

Also, meine Frage ist zweifach:

a) Warum es so lange dauert, den Prozess (und sinnvoller zu zerstören, lassen Sie die verwendeten Ressourcen/durch sie gesperrt), wenn der app-Pool statt recycelt von gestoppt; und

b) Angenommen, ich habe verhindert, dass der Datenverkehr auf den Server geleitet wird, gibt es einen Grund, NICHT zu stoppen/zu starten statt zu recyceln?


Edit: Um zu klären, bevor ich entweder recyceln oder die App-Pool stoppen, ich stoppen Verkehr von in Frage an den Server gesendet werden (der Server in einem Lastenausgleich-Cluster, und ich entfernen Sie den Server aus dem Load Balancer). Theoretisch sollten daher zu der Zeit, in der ich irgendetwas mit dem App-Pool mache, keine Anfragen auf die Website kommen.


Teil bearbeiten Deux: Nach Igal den Link zu lesen, scheint es mir ziemlich offensichtlich, was passiert. Wenn ich den App-Pool wiederverwerfe, wird der neue Prozess gestartet, aber da überhaupt kein Datenverkehr vorhanden ist, wird der neue Prozess nicht als funktionierend registriert. Daher wird der alte Prozess erst nach dem Timeout (90) beendet Sekunden).

Mit diesem Wissen ist es für mich klar, dass die "Recycle" -Funktionalität speziell für die Midstream-Nutzung auf einem Live-Server gedacht ist, und da ich den Verkehr manuell vorher entleere, sollte ich stattdessen stop/start verwenden.

Antwort

23

a) Wegen Overlapped Recycling. Es gibt einen Zeitraum, in dem der "alte" Prozess auf den Start des neuen Prozesses wartet.

b) Nein. Soweit ich weiß.

+0

Dieser Link beantwortet beide Fragen vollständig, danke! –

+0

@igal Hallo, sagen wir, der Server hatte eine Sitzung für John (inProc). jetzt sagen wir, dass der Admin 'recycle' gemacht hat. jetzt tritt das überlappende Recyclen auf. und alle Anfragen sind erledigt. Der neue Prozess wird gestartet. Will John jetzt die gleiche Sitzung ID? (Neustart wird nicht sicher speichern. Die Frage ist für Recycling). –

+0

@RoyiNamir Hallo. Recycling wird nicht helfen. Die Sitzungs-ID und die Sitzungsdaten gehen nach der Wiederverwendung verloren. –

13

Ein Recycling, wenn ich mich richtig erinnere erlaubt alle bestehenden Anfragen zu beenden, dann wird es den Anwendungspool recyceln. Ein Stopp beendet es einfach in dem Moment, in dem Sie es stoppen.