Come disabilitare il timeout di inattività del pool di applicazioni in IIS7?


Risposte:


184

Sì, l'impostazione del valore di timeout di inattività su zero disabiliterà i timeout di inattività.

Stranamente questo non è documentato nei documenti MS ma la mia prova per questo deriva da:

  • Schema delle impostazioni IIS

    Se dai un'occhiata allo schema delle impostazioni IIS in:

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

    La definizione dello schema per idleTimeoutunder

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

    sembra:

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

    Se guardi l' validationParameterattributo vediamo un intervallo da 0 a 2592000 secondi ( ,60specifica la granularità dell'impostazione, in questo caso il valore deve essere divisibile per 60 [un minuto]).

    Se vedi un valore iniziale ammissibile di 0allora che di solito indica che l'impostazione può essere disabilitata.

  • Impostazioni di timeout di inattività del pool di applicazioni IIS7

    Brad Kingsley è il fondatore e CEO di OrcsWeb, un hoster e partner Gold Microsoft abbastanza conosciuto, rispettato e affidabile.

  • Poi c'è anche l'evidenza empirica del fatto che "funziona".


3
un avvertimento per gli altri - dopo aver letto questo, ho impostato il mio timeout di inattività su 0 su IIS7 e ha iniziato il timeout immediatamente - ogni caricamento della pagina ha richiesto circa 15 secondi. l'ho aumentato a 600 e tutto è di nuovo incredibilmente veloce.
nailitdown,

1
@nailitdown: potresti voler ricontrollarlo. Ho appena impostato il timeout del pool di app IIS6 su 0 e funziona correttamente. C'è una possibilità che sia diverso tra IIS7 / IIS6, che sarebbe utile sapere.
Doug S,

3
da quando ho pubblicato che avevamo diversi problemi con il VPS con cui stavo lavorando ... molto probabilmente è stato configurato in modo errato. Ho appena provato a duplicarlo sul nuovo VPS e si comporta correttamente, come descritto.
nailitdown

3
@ Zero3 - beh .... prima di modificare qualsiasi impostazione su un sito ad alto traffico dovresti sempre testare gli effetti collaterali ecc. Sul tuo ambiente di stadiazione / QA. Inoltre, durante il periodo in cui stai applicando la modifica al tuo ambiente di produzione, dovresti davvero lanciare una pagina di manutenzione per gli utenti pubblici fino a quando la modifica non avrà effetto. Devi gestire questi cambiamenti in modo che non ci siano sorprese.
Kev

2
@ Zero3 - sì, la modifica di molte impostazioni del pool di app richiede un riavvio del processo per avere effetto, che per impostazione predefinita avviene immediatamente. È possibile modificarlo con DisallowRotationOnConfigChange - consultare serverfault.com/questions/333907/… per ulteriori informazioni.
TristanK,

11

Bella risposta! grazie Kev!

Un piccolo aggiornamento: l'URL che hai pubblicato è stato spostato e ora è: http://bradkingsley.com/iis7-application-pool-idle-time-out-settings/

Mi chiedevo se c'è un motivo per cui questo non è il valore predefinito e se ci potrebbe essere un impatto sulle prestazioni per mantenere aperto il pool di applicazioni per troppo tempo. Bene, tenerlo su quando è inattivo non ti causerà più problemi di non riciclarlo quando c'è traffico e nessun tempo di inattività. Se sei preoccupato per perdite di memoria o altre perdite di risorse, esiste un'impostazione per forzare il riciclo in base al tempo / numero di richieste dall'ultimo riciclo / consumo di memoria. Ecco la documentazione per questo:

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

Ho intenzione di impostare il mio server in modo che non ricicli in modalità inattiva (idleTimeout = 0) e riciclo ogni 24 ore: Riciclaggio> Intervallo di tempo normale = 1440


15
Probabilmente si consiglia di impostare il riciclo su un tempo fisso (ad es. 0100) anziché su 24 ore poiché ciò comporterà 24 ore dall'ultimo riavvio / reimpostazione del server.
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" 
}

6
Una spiegazione di questo codice incollato sarebbe utile.
Luke Alderton
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.