Frage Warum wird der IIS-Arbeitsprozess alle 29 Stunden und nicht alle 24 Stunden wiederverwendet?


Wenn Sie eine Site auf IIS einrichten, wird der Arbeitsprozess standardmäßig auf 1740 Minuten (29 Stunden) zurückgesetzt. Warum eine ungerade Zahl wie 29 Stunden und nicht zum Beispiel 24 oder 48 Stunden?


24
2018-01-10 14:28


Ursprung




Antworten:


Bei Tech Ed 2003 wurde der Moderator diese Frage gestellt, und die Antwort war, dass sie einen unregelmäßigen Zyklus wollten, um zu verhindern, dass er an einer täglichen Grenze auftritt (z. B. um sich von anderen täglichen Aufgaben auf dem Server / der Domäne zu unterscheiden).

Der Standort hier (Link tot) spekuliert:

... (29 ist die erste Primzahl nach 24), so dass die geringste Wahrscheinlichkeit besteht, dass sie in einem regulären Muster mit einem anderen Serverprozess auftritt; Erleichterung der Untersuchung von Problemen

Eine andere Seite scheint dies zu bestätigen:

(Wade Hilmo) schlug 29 Stunden aus dem einfachen Grund vor, dass es die kleinste Primzahl über 24 ist. Er wollte ein gestaffeltes und sich nicht wiederholendes Muster, das nicht häufiger als einmal pro Tag vorkommt


27
2018-01-10 14:37



Interessant. Persönlich denke ich, dass es jeden Tag zur gleichen Zeit wiederkehren würde, wenn es einfacher wäre, nachzuverfolgen, ob der Recyclingprozess des Arbeitsprozesses andere Probleme verursacht. z.B. Das Aufspüren eines Problems, das ungefähr jeden Tag passiert, ist schwierig, aber es ist einfacher, wenn es jeden Tag um 19 Uhr passiert, weil Sie das System nach Ereignissen durchsuchen können, die zu diesem Zeitpunkt stattfinden. Ich weiß, dass Sie festlegen können, dass IIS wann immer Sie wollen oder nicht, aber die meisten standardmäßig beibehalten. Danke für die Antwort! - Guy


OK, das nervte mich, also grub ich herum und fand schließlich dieser Beitrag von einem Mann, der anscheinend im IIS-Team war:

Der Grund, warum IIS6 standardmäßig alle 29 Stunden rezykliert (und wir hatten einen Grund 

Der Grund, warum IIS6 standardmäßig alle 29 Stunden rezykliert (und wir hatten eine   Grund für die Wahl 29 Stunden als Standardwert) ist, weil mehr   wahrscheinlich ist die Webanwendung, die darauf ausgeführt wird, unzuverlässig und   muss buchstäblich häufig neu starten.

So ist IIS6 um die Prämisse herum gebaut (bekanntlich zynisch), dass die   Die Webanwendung des Benutzers wird nicht länger als 24 zusammenhängende Stunden ausgeführt.   Funktionen werden entsprechend geplant und Standardeinstellungen gewählt. Arbeitnehmer   Prozesse recyceln alle 29 Stunden, Prozessstart und -abschaltung sind   überwacht, wird der Prozess ständig gepingt, um sicherzustellen, dass es ist   ausgeführt wird, wird der Prozess-Handle verfolgt und signalisiert, wenn er beendet wird   unerwartet usw.

Zu erkennen, dass das Recycling ein normaler Teil des Betriebs ist, auch IIS6   stellt sicher, ein solches Recycling vom Endbenutzer zu isolieren - das Ende   Die TCP-Verbindung des Benutzers wird während eines Recyclings aufgrund von einigen nie beendet   Kernel-Modus Magie. Kombiniert mit der Benutzermodusanwendung, die speichert   Session-State Out-of-Process (wie ASP.Net Session State Service), eins   ist praktisch garantiert zuverlässige Verfügbarkeit ohne Benutzer sichtbare Daten   Verlust, auch wenn die Webanwendung nach der Verarbeitung alle abstürzt   Einzelbenutzeranfrage.

Das ist ungefähr so ​​gut, wie IIS6 es schaffen kann - angesichts eines unzuverlässigen Webs   Anwendung, machen es für den Endbenutzer zuverlässig und tun es   ohne irgendwelche Korrekturen der unzuverlässigen Webanwendung zu erfordern.

Natürlich kann nicht jede unzuverlässige Anwendung zum Erscheinen gebracht werden   zuverlässig - wenn ja, dann sind wir alle arbeitslos! - aber IIS6 versucht es sicher   eine ganze Menge mehr resiliant sein.

In Ihrem Fall passiert es einfach, dass die Resilienz eine Nebenwirkung hat   nicht persistent Benutzerstatus, aber es kann leicht angepasst werden.

Angenommen, Ihre Webanwendung hat nie ein Problem und bleibt   Sitzungsstatus verarbeiten, möchten Sie diese Standardwerte ändern:   1. Schalten Sie das 29-stündige periodische Recycling aus   2. Deaktivieren Sie das 20-Minuten-Leerlaufzeitlimit

Dies verhindert einen unerwarteten Verlust des Sitzungsstatus.

Natürlich, wenn Sie jemals eine Anwendung mit Out-of-Process-Sitzung verwenden   Zustand, du kannst alles wie die Standardwerte lassen und a nie bemerken   Unterschied in Funktionalität und Zuverlässigkeit.


18
2018-01-10 14:54



Ich fühle mich dumm, dies zu fragen, aber wenn IIS annimmt, dass die Web-App es nicht bis 24 Stunden schafft, wie kommt es, dass 29 eine gute Wahl ist? Sollten sie nicht eine Nummer unter 24 gewählt haben? Wo liege ich falsch bei der Interpretation dieser Erklärung? - Alpha
Vielleicht gibt es keine "beste" Antwort für den Standardwert, und die Person, die die Website verwaltet, sollte eine bewusste Entscheidung treffen, basierend auf der App und dem System. - DOK
@Alpha - dem stimme ich zu - das macht keinen Sinn - es sollte auf 22 oder 23 Stunden oder mindestens etwas niedriger als 24 voreingestellt werden. - Guy
[Zitat benötigt] - piers7
Ich bekomme jeden Morgen auf Teilen der Website einen seltsamen Kompilierfehler, der nur mit einem Recycling behoben werden kann. Meine Vermutung ist, dass die Idle-Timeout-Trigger über Nacht wegen niedriger Last ausgelöst werden, und aus irgendeinem Grund, wenn es erneut startet, ist der Kompilierfehler zurück. Danke für die Führung, ich werde diesem Weg folgen, um mein Problem zu beheben ... - sonjz