2013-11-14 17 views
65

In IIS ci sono due aree (beh, più di due) in cui il riciclaggio può verificarsi:IIS: Timeout di inattività vs Recycle

  1. Nella sezione "Modello di processo" → "Idle Timeout" (impostazione predefinita 20 minuti)

e

  1. Nella sezione "Recycle" → "Regular Intervallo di tempo" (default 1740 minuti)

Le mie domande sono:

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

risposta

67

timeout di inattività è che se nessuna azione è stato chiesto dal vostro web app, il processo cadrà e rilasciare tutto a memoria

Riciclare è un'azione forzata sull'applicazione in cui il vostro elaborato è chiuso e ha iniziato di nuovo , per perdite di memoria e integrità del sistema

L'impatto negativo di entrambi è solitamente l'utilizzo della sessione e lo stato dell'applicazione si perde se si scherza con Riciclare in un tempo più veloce.(gli utenti registrati ecc. verranno disconnessi, se sono in procinto di "check out" tutto sarebbe andato perduto "ecco perché il riciclo ha un valore di timeout così ampio, il timeout di inattività non importa perché nessuno è connesso in ogni caso e figura 20 minuti una non azione non sono ancora "shopping"

Il positivo sarebbe sbarazzarsi del tempo di inattività in quanto il tuo sito web risponderà più velocemente sulla sua "prima" risposta se non è un sito altamente attivo in cui un utente dovrebbe aspettare che si carichi se si dispone di 1 utente ogni 20 minuti diciamo. Quindi un sito web che ottiene il suo meno di 1 volta in 20 minuti in realtà si vorrebbe aumentare questo valore come il sito Web deve caricare di nuovo da zero per ogni utente, ma se si imposta su 0 per un lungo periodo di tempo, qualsiasi perdita di memoria nel codice potrebbe richiedere più del tempo, occupandosi interamente del server.

+0

Grazie! Ciò ha senso. Il mio principale dilemma è che il "primo carico" richiede molto tempo. Ho pensato che se avessi impostato entrambi su 0, allora posso eludere quello. 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 concluso immediatamente dopo il riciclo? O forse programmare il riciclo alle 2 del mattino, e quindi programmare un "primo accesso" alle 2:30 del mattino? C'è un modo in IIS per farlo? – Ricky

+0

@Ricky Anche io ho avuto il problema della prima hit. È necessario impostare startMode del pool di applicazioni come AlwaysRunning: http://msdn.microsoft.com/en-us/library/ee677285%28v=azure.10%29.aspx –

+0

Questo è stato utile anche a me: https://www.simple-talk.com/blogs/2013/03/05/speeding-up-your-application-with-the-iis-auto-start-feature/ –

23

Da here:

Un modo per risparmiare risorse di sistema è quello di configurare il timeout di inattività impostazioni per i processi di lavoro in un pool di applicazioni. Quando sono configurate queste impostazioni , un processo di lavoro si interromperà dopo un periodo specificato di inattività . Il valore predefinito per il timeout di inattività è 20 minuti.

Controllare anche Why is the IIS default app pool recycle set to 1740 minutes?

Se si dispone di un solo un numero limitato di siti sul server e si desidera loro di sempre caricare velocemente quindi impostare questo a zero. Altrimenti, quando si dispone di 20 minuti senza traffico, il pool di applicazioni si interromperà in modo che possa essere riavviato alla successiva visita. Il problema è che la prima visita di in un pool di app deve creare un nuovo processo di lavoro w3wp.exe che è lento perché è necessario creare il pool di app, ASP.NET o , deve essere caricato un altro framework e quindi il l'applicazione richiede da caricare. Questo può richiedere alcuni secondi. Quindi l'ho impostato su 0 ogni volta che ho, a meno che non sia per un server che ospita un sacco di siti che non sempre devono essere in esecuzione.

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, indipendentemente (senza avere il client acceso). Quindi hanno tutti i timer. I timer del servizio Web si stavano spegnendo (perdita di memoria?), Quindi abbiamo impostato il tempo di pausa a 0 e il timer rimane acceso.

0

IIS ora ha

Idle Time-out Action : Suspend impostazione

Sospendere è solo blocca il processo ed è molto più efficiente rispetto al distruggere il processo.

Problemi correlati