Wie deaktiviere ich das Zeitlimit für den Leerlauf des Anwendungspools in IIS7?

Antworten:

184

Ja, wenn Sie den Wert für das Leerlaufzeitlimit auf Null setzen, werden Leerlaufzeitlimits deaktiviert.

Seltsamerweise ist dies nicht in den MS-Dokumenten dokumentiert, aber meine Beweise dafür ergeben sich aus:

  • IIS-Einstellungsschema

    Wenn Sie sich das IIS-Einstellungsschema ansehen in:

    C:\Windows\System32\inetsrv\config\schema\IIS_schema.xml

    Die Schemadefinition für idleTimeoutunter

    <sectionSchema name="system.applicationHost/applicationPools">

    es sieht aus wie:

    <attribute name="idleTimeout" 
           type="timeSpan" 
           defaultValue="00:20:00" 
           validationType="timeSpanRange" 
           validationParameter="0,2592000,60"/>

    Wenn Sie sich das validationParameterAttribut ansehen, sehen Sie einen Bereich von 0 bis 2592000 Sekunden (dies ,60gibt die Granularität der Einstellung an, in diesem Fall muss der Wert durch 60 [eine Minute] teilbar sein).

    Wenn Sie einen zulässigen Startwert von sehen 0, bedeutet dies normalerweise, dass die Einstellung deaktiviert werden kann.

  • Timeout-Einstellungen für den Leerlauf des IIS7-Anwendungspools

    Brad Kingsley ist der Gründer und CEO von OrcsWeb, einem ziemlich bekannten, angesehenen und vertrauenswürdigen Microsoft-Hoster und Gold-Partner.

  • Dann gibt es auch den empirischen Beweis dafür, dass es "einfach funktioniert".

Kev
quelle
3
Ein Headsup für andere - nachdem ich dies gelesen hatte, setzte ich mein Leerlaufzeitlimit auf IIS7 auf 0 und es begann sofort mit dem Timeout - jedes Laden der Seite dauerte ungefähr 15 Sekunden. Ich habe es jetzt auf 600 erhöht und alles ist wieder blitzschnell.
Nailitdown
1
@nailitdown: Vielleicht möchten Sie das noch einmal überprüfen. Ich habe gerade mein Zeitlimit für den IIS6-App-Pool auf 0 gesetzt und es funktioniert einwandfrei. Es besteht die Möglichkeit, dass es zwischen IIS7 / IIS6 anders ist, was gut zu wissen wäre.
Doug S
3
seit ich gepostet habe, dass wir mehrere Probleme mit dem VPS hatten, mit dem ich gearbeitet habe ... sehr wahrscheinlich war es irgendwie falsch konfiguriert. Ich habe gerade versucht, es auf dem neuen VPS zu duplizieren, und es verhält sich wie beschrieben richtig.
Nailitdown
3
@ Zero3 - na ja ... bevor Sie eine Einstellung auf einer stark frequentierten Site ändern , sollten Sie immer auf Nebenwirkungen usw. in Ihrer Staging- / QS-Umgebung testen. Während der Zeit, in der Sie die Änderung auf Ihre Produktionsumgebung anwenden, sollten Sie wirklich eine Wartungsseite für öffentlich zugängliche Benutzer aufrufen, bis die Änderung wirksam wird. Sie müssen diese Änderungen verwalten, damit es keine Überraschungen gibt.
Kev
2
@ Zero3 - Ja, das Ändern vieler Einstellungen für den App-Pool erfordert einen Neustart des Prozesses, um wirksam zu werden. Dies geschieht standardmäßig sofort. Sie können dies mit DisallowRotationOnConfigChange ändern. Weitere Informationen hierzu finden Sie unter serverfault.com/questions/333907/… .
TristanK
11

Gute Antwort! danke Kev!

Ein kleines Update: Die von Ihnen gepostete URL wurde verschoben und lautet jetzt: http://bradkingsley.com/iis7-application-pool-idle-time-out-settings/

Ich habe mich gefragt, ob es einen Grund gibt, warum dies nicht die Standardeinstellung ist, und ob es möglicherweise Auswirkungen auf die Leistung hat, wenn der Anwendungspool zu lange geöffnet bleibt. Wenn Sie im Leerlauf weitermachen, werden Sie nicht mehr Probleme haben, als wenn Sie es nicht recyceln, wenn Verkehr herrscht und keine Leerlaufzeit herrscht. Wenn Sie sich Sorgen über Speicherlecks oder andere Ressourcenlecks machen, gibt es eine Einstellung zum Erzwingen des Recyclings basierend auf der Zeit / Anzahl der Anforderungen seit dem letzten Recycling / Speicherverbrauch. Hier ist die Dokumentation dafür:

http://technet.microsoft.com/en-us/library/cc753179(v=ws.10).aspx

Ich werde meinen Server so einstellen, dass er im Leerlauf nicht recycelt wird (idleTimeout = 0), und alle 24 Stunden recyceln: Recycling> Normales Zeitintervall = 1440

Shay Mandel
quelle
15
Es ist wahrscheinlich besser, das Recycling auf eine feste Zeit (z. B. 0100) als auf 24 Stunden einzustellen, da dies zu 24 Stunden seit dem letzten Neustart des Servers / Zurücksetzen führt.
Neal
1
Import-Module WebAdministration

$pools = Get-ChildItem iis:\apppools

foreach ($pool in $pools)
{ 
$poolname = $pool.Name

Set-ItemProperty IIS:\AppPools\$poolname -name processModel -value @{idletimeout="20"}
Set-ItemProperty IIS:\AppPools\$poolname -name processModel -value @{idletimeoutaction="Suspend"}
set-ItemProperty IIS:\AppPools\$poolname -Name Recycling.periodicRestart -Value @{time="0"} 
set-ItemProperty IIS:\AppPools\$poolname -Name Recycling.periodicRestart.schedule -Value @{value="02:00:00"} 
Set-ItemProperty IIS:\AppPools\$poolname -name Recycling -value @{logEventOnRecycle="Time, Requests, Schedule, Memory, IsapiUnhealthy, OnDemand, ConfigChange, PrivateMemory"} 

Write-Host "Updated $poolname settings" 
}
user6470603
quelle
6
Eine Erklärung dieses eingefügten Codes wäre nützlich.
Luke Alderton