IIS: Leerlaufzeitüberschreitung vs. Recycling

97

In IIS gibt es zwei Bereiche (also mehr als zwei), in denen Recycling stattfinden kann:

  1. Im Abschnitt "Prozessmodell" → "Leerlaufzeitlimit" (Standard 20 Minuten)

und

  1. Unter dem Abschnitt "Recyceln" → "Regelmäßiges Zeitintervall" (Standard 1740 Minuten)

Meine Fragen sind:

  1. Was sind die Unterschiede zwischen den beiden Methoden?
  2. Was sind die negativen Auswirkungen der Einstellung auf 0?
Ricky
quelle

Antworten:

97

Leerlaufzeitlimit: Wenn von Ihrer Web-App keine Aktion abgefragt wurde, wird der Prozess abgebrochen und alles aus dem Speicher freigegeben

Das Recyceln ist eine erzwungene Aktion für die Anwendung, bei der Ihre Verarbeitung geschlossen und erneut gestartet wird, um Speicherverluste und den Systemzustand zu gewährleisten

Die negative Auswirkung von beiden ist normalerweise, dass die Verwendung Ihres Sitzungs- und Anwendungsstatus verloren geht, wenn Sie sich schneller mit Recycle anlegen. (Angemeldete Benutzer usw. werden abgemeldet, wenn sie alle "auschecken" wollten verloren "Aus diesem Grund hat das Recycling einen so hohen Wert für das Zeitlimit. Das Zeitlimit für Leerlauf spielt keine Rolle, da ohnehin niemand angemeldet ist.

Das Positive wäre, die Leerlaufzeit zu beseitigen, da Ihre Website schneller auf ihre "erste" Antwort reagiert, wenn es sich nicht um eine hochaktive Website handelt, auf der ein Benutzer warten müsste, bis sie geladen wird, wenn Sie alle 20 Minuten 1 Benutzer haben sagen. Bei einer Website, die in 20 Minuten weniger als 1 Mal verfügbar ist, sollten Sie diesen Wert erhöhen, da die Website für jeden Benutzer von Grund auf neu geladen werden muss. Wenn Sie dies jedoch über einen längeren Zeitraum auf 0 setzen, können Speicherverluste im Code über einen bestimmten Zeitraum den Server vollständig übernehmen.

MichaelEvanchik
quelle
Vielen Dank! Das macht Sinn. Mein Hauptdilemma ist, dass die "erste Ladung" sehr lange dauert. Ich dachte, wenn ich beide auf 0 setze, kann ich das umgehen. Das Problem des Speicherverlusts ist jedoch ein Problem. Gibt es eine Möglichkeit, eine Anforderung zu "recyceln", aber dann zu "erzwingen", sodass der "erstmalige Zugriff" unmittelbar nach dem Recycling beendet und abgeschlossen ist? Oder planen Sie das Recycling um 2 Uhr morgens und planen Sie dann um 2:30 Uhr einen "Erstzugriff"? Gibt es in IIS eine Möglichkeit, dies zu tun?
Ricky
@ Ricky Ich bekam auch das Problem mit dem ersten Treffer. Sie müssen den Startmodus Ihres Anwendungspools auf AlwaysRunning einstellen: msdn.microsoft.com/en-us/library/ee677285%28v=azure.10%29.aspx
Steve Hibbert
Dies war auch für mich nützlich: simple-talk.com/blogs/2013/03/05/…
Steve Hibbert
3
@Silvermind - Wenn die Sitzung in Bearbeitung gespeichert wird, wird sie beim Recycling nicht kopiert. Siehe hier .
BornToCode
31

Von hier aus :

Eine Möglichkeit, Systemressourcen zu schonen, besteht darin, Einstellungen für das Leerlaufzeitlimit für die Arbeitsprozesse in einem Anwendungspool zu konfigurieren. Wenn diese Einstellungen konfiguriert sind, wird ein Arbeitsprozess nach einer bestimmten Zeit der Inaktivität heruntergefahren. Der Standardwert für das Leerlaufzeitlimit beträgt 20 Minuten.

Überprüfen Sie auch, warum der IIS-Standard-App-Pool-Recycling auf 1740 Minuten festgelegt ist.

Wenn Sie nur wenige Sites auf Ihrem Server haben und diese immer schnell geladen werden sollen, setzen Sie diese auf Null. Andernfalls wird der App-Pool beendet, wenn Sie 20 Minuten ohne Datenverkehr haben, damit er beim nächsten Besuch erneut gestartet werden kann. Das Problem ist, dass beim ersten Besuch eines App-Pools ein neuer Arbeitsprozess für w3wp.exe erstellt werden muss, der langsam ist, da der App-Pool erstellt werden muss, ASP.NET oder ein anderes Framework geladen werden muss und dann Ihre Anwendung geladen sein. Das kann einige Sekunden dauern. Daher setze ich das bei jeder Gelegenheit auf 0, es sei denn, es handelt sich um einen Server, auf dem viele Websites gehostet werden, die nicht immer ausgeführt werden müssen.

Rahul Tripathi
quelle
6

IIS hat jetzt

Idle Time-out Action : Suspend Rahmen

Das Anhalten friert den Prozess nur ein und ist viel effizienter als das Zerstören des Prozesses.

nPcomp
quelle
0

Ich habe eine Desktop-App geerbt, die eine Reihe von Webdiensten auf IIS aufruft. Die Webdienste müssen (auch) in der Lage sein, zeitgesteuerte Prozesse unabhängig auszuführen (ohne dass der Client eingeschaltet ist). Daher haben sie alle Timer. Die Webdienst-Timer wurden heruntergefahren (Speicherverlust?), Daher haben wir die Leerlaufzeit auf 0 gesetzt und die Timer bleiben eingeschaltet.

DaniDev
quelle