IIS: timeout di inattività e riciclo


97

In IIS ci sono due aree (beh, più di due) in cui può avvenire il riciclaggio:

  1. Nella sezione "Modello di processo" → "Timeout di inattività" (valore predefinito 20 minuti)

e

  1. Nella sezione "Riciclaggio" → "Intervallo di tempo normale" (predefinito 1740 minuti)

Le mie domande sono:

  1. Quali sono le differenze tra i due metodi?
  2. Quali sono le implicazioni negative di impostarli su 0?

Risposte:


97

Idle Timeout è se non è stata richiesta alcuna azione dalla tua app web, il processo si interromperà e rilascerà tutto dalla memoria

Il riciclo è un'azione forzata sull'applicazione in cui l'elaborazione viene chiusa e riavviata, per scopi di perdita di memoria e integrità del sistema

L'impatto negativo di entrambi è di solito l'uso della sessione e lo stato dell'applicazione viene perso se si scherza con Recycle in un tempo più veloce. (Gli utenti che hanno effettuato l'accesso ecc. Verranno disconnessi, se stavano per "fare il check out" tutto sarebbe stato perso "ecco perché il riciclo ha un valore di timeout così elevato, il timeout di inattività non ha importanza perché nessuno è comunque connesso e calcola 20 minuti senza azione non stanno ancora" facendo acquisti "

L'aspetto positivo sarebbe eliminare il tempo di inattività poiché il tuo sito web risponderà più velocemente alla sua "prima" risposta se non è un sito molto attivo in cui un utente dovrebbe attendere il caricamento se hai 1 utente ogni 20 minuti. dire. Quindi un sito Web che ottiene il suo tempo inferiore a 1 in 20 minuti, in realtà vorresti aumentare questo valore poiché il sito Web deve ricaricarsi da zero per ogni utente. ma se lo imposti a 0 per un lungo periodo di tempo, qualsiasi perdita di memoria nel codice potrebbe, per un certo periodo di tempo, prendere completamente il controllo del server.


Grazie! Questo ha senso. Il mio principale dilemma è che il "primo caricamento" sta impiegando molto tempo. Ho pensato che se avessi impostato entrambi su 0, avrei potuto aggirarlo. Tuttavia, il problema della perdita di memoria è un problema. C'è un modo per "riciclare" ma poi "forzare" una richiesta in modo che il "primo accesso" sia terminato e fatto subito dopo il riciclo? O forse programmare il riciclo alle 2 del mattino e poi programmare un "primo accesso" alle 2:30? C'è un modo in IIS per farlo?
Ricky

@ Ricky Anch'io stavo avendo il problema del primo colpo di età. È necessario impostare l'applicazione piscina startMode essere AlwaysRunning: msdn.microsoft.com/en-us/library/ee677285%28v=azure.10%29.aspx
Steve Hibbert

Questo è stato utile anche a me: simple-talk.com/blogs/2013/03/05/…
Steve Hibbert

3
@Silvermind - Se la sessione è archiviata in elaborazione, non verrà copiata al riciclo. Vedi qui .
BornToCode

31

Da qui :

Un modo per conservare le risorse di sistema consiste nel configurare le impostazioni di timeout di inattività per i processi di lavoro in un pool di applicazioni. Quando queste impostazioni sono configurate, un processo di lavoro verrà chiuso dopo un periodo di inattività specificato. Il valore predefinito per il timeout di inattività è 20 minuti.

Controlla anche Perché il riciclo del pool di app predefinito di IIS è impostato su 1740 minuti?

Se hai solo pochi siti sul tuo server e desideri che si caricano sempre velocemente, impostalo su zero. Altrimenti, quando si hanno 20 minuti senza traffico, il pool di app verrà chiuso in modo da poter essere riavviato alla visita successiva. Il problema è che la prima visita a un pool di app deve creare un nuovo processo di lavoro w3wp.exe che è lento perché il pool di app deve essere creato, ASP.NET o un altro framework deve essere caricato, quindi la tua applicazione deve essere caricato. Ciò può richiedere alcuni secondi. Pertanto l'ho impostato a 0 ogni volta che ho, a meno che non sia per un server che ospita molti siti che non devono essere sempre in esecuzione.


6

IIS ora ha

Idle Time-out Action : Suspend ambientazione

La sospensione è solo il congelamento del processo ed è molto più efficiente della distruzione del processo.


0

Ho ereditato un'app desktop che effettua chiamate a una serie di servizi Web su IIS. I servizi web (anche) devono essere in grado di eseguire processi a tempo, in modo indipendente (senza avere il client acceso). Quindi tutti hanno timer. I timer del servizio web si stavano spegnendo (perdita di memoria?) Quindi abbiamo impostato il timeout di inattività su 0 e i timer rimangono attivi.

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.