IIS: Tempo Limite Inativo vs. Reciclagem

97

No IIS, existem duas áreas (bem, mais de duas) onde a reciclagem pode ocorrer:

  1. Na seção "Modelo de processo" → "Tempo limite ocioso" (padrão 20 minutos)

e

  1. Na seção "Reciclar" → "Intervalo de tempo regular" (padrão 1740 minutos)

Minhas perguntas são:

  1. Quais são as diferenças entre os dois métodos?
  2. Quais são as implicações negativas de configurá-los para 0?
Ricky
fonte

Respostas:

97

Idle Timeout é se nenhuma ação for solicitada do seu aplicativo da web, o processo irá descartar e liberar tudo da memória

A reciclagem é uma ação forçada no aplicativo em que seu processado é fechado e reiniciado, para fins de vazamento de memória e integridade do sistema

O impacto negativo de ambos é geralmente o uso de sua sessão e o estado do aplicativo é perdido se você mexer com o Reciclar para um tempo mais rápido. (Usuários conectados etc serão desconectados, se eles estivessem prestes a "verificar", todos teriam sido perdido "é por isso que a reciclagem tem um valor de tempo limite tão grande, o tempo limite inativo não importa porque ninguém está conectado de qualquer maneira e calcula 20 minutos sem ação, eles ainda não estão" comprando "

O positivo seria se livrar do tempo de inatividade, pois seu site responderá mais rápido em sua "primeira" resposta se não for um site altamente ativo, onde um usuário teria que esperar para carregar se você tiver 1 usuário a cada 20 minutos, vamos dizer. Portanto, um site que obtém menos de 1 vez em 20 minutos, na verdade, você gostaria de aumentar esse valor, pois o site tem que ser carregado novamente do zero para cada usuário. mas se você definir isso como 0 por um longo tempo, qualquer vazamento de memória no código pode, ao longo de um determinado período, assumir totalmente o controle do servidor.

MichaelEvanchik
fonte
Obrigado! Isso faz sentido. Meu principal dilema é que a "primeira carga" está demorando muito. Pensei que, se definir ambos como 0, posso contornar isso. No entanto, o problema de vazamento de memória é um problema. Existe uma maneira de "reciclar", mas depois "forçar" uma solicitação para que o "primeiro acesso" termine e seja concluído imediatamente após a reciclagem? Ou talvez agendar a reciclagem para 2h e, em seguida, agendar um "primeiro acesso" às 2h30? Existe uma maneira no IIS de fazer isso?
Ricky
@Ricky Eu também estava tendo o problema do primeiro golpe, leva anos. Você precisa definir o startMode do pool de aplicativos como AlwaysRunning: msdn.microsoft.com/en-us/library/ee677285%28v=azure.10%29.aspx
Steve Hibbert
Isso foi útil para mim também: simple-talk.com/blogs/2013/03/05/…
Steve Hibbert
3
@Silvermind - Se a sessão for armazenada em processo, ela não será copiada na reciclagem. Veja aqui .
BornToCode
31

A partir daqui :

Uma maneira de conservar os recursos do sistema é definir configurações de tempo limite ocioso para os processos de trabalho em um pool de aplicativos. Quando essas configurações são definidas, um processo de trabalho é encerrado após um determinado período de inatividade. O valor padrão para o tempo limite de inatividade é de 20 minutos.

Verifique também Por que a reciclagem do pool de aplicativos padrão do IIS está definida para 1740 minutos?

Se você tiver apenas alguns sites em seu servidor e quiser que eles carreguem sempre rápido, defina como zero. Caso contrário, quando você tiver 20 minutos sem tráfego, o pool de aplicativos será encerrado para que possa ser iniciado novamente na próxima visita. O problema é que a primeira visita a um pool de aplicativos precisa criar um novo processo de trabalho w3wp.exe que é lento porque o pool de aplicativos precisa ser criado, ASP.NET ou outra estrutura precisa ser carregada e, em seguida, seu aplicativo precisa ser carregado. Isso pode demorar alguns segundos. Portanto, eu defino isso como 0 sempre que tenho, a menos que seja para um servidor que hospeda muitos sites que nem sempre precisam estar em execução.

Rahul Tripathi
fonte
6

IIS agora tem

Idle Time-out Action : Suspend configuração

Suspender apenas congela o processo e é muito mais eficiente do que destruir o processo.

nPcomp
fonte
0

Eu herdei um aplicativo de desktop que faz chamadas para uma série de serviços da Web no IIS. Os serviços web (também) devem ser capazes de executar processos cronometrados, de forma independente (sem ter o cliente ligado). Portanto, todos eles têm temporizadores. Os temporizadores do serviço da Web estavam desligando (vazamento de memória?), Então definimos o tempo limite de inatividade como 0 e os temporizadores permanecem ativos.

DaniDev
fonte