Reciclando
A reciclagem é geralmente * onde o IIS inicia um novo processo como um contêiner para o seu aplicativo e, em seguida, entrega o antigo ao ShutdownTimeLimit para que ele desapareça por vontade própria antes de ser morto.
* - geralmente: consulte DisallowOverlappingRotation / configuração "Desativar reciclagem sobreposta"
É destrutivo , pois o processo original e todas as suas informações de estado são descartadas. O uso de um estado de sessão fora de processo (por exemplo, Servidor de Estado ou banco de dados ou até mesmo um cookie se seu estado for pequeno) pode permitir que você contorne isso.
Mas, por padrão, ela se sobrepõe - o que significa que a duração de uma interrupção é minimizada porque o novo processo é iniciado e está conectado à fila de solicitações, antes que o antigo seja informado "você tem [ShutdownTimeLimit] segundos para desaparecer. Por favor, cumpra."
Configurações
Para sua pergunta: todas as configurações nessa página controlam a reciclagem de alguma forma. "Desligamento" pode ser descrito como "reciclagem proativa" - onde o próprio processo decide que é hora de partir e sai de maneira ordenada.
A reciclagem reativa é onde o WAS detecta um problema e dispara no processo (após estabelecer um W3WP de substituição adequado).
Agora, aqui estão algumas coisas que podem causar a reciclagem de um formulário ou de outro:
- um ISAPI decidindo que não é saudável
- qualquer módulo travando
- tempo limite inativo
- limitação da CPU
- ajustando propriedades do pool de aplicativos
- como sua mãe pode ter gritado a certa altura: "Pare de mexer nela, ou isso nunca vai melhorar!"
- falha no "ping" *, na verdade, não é o ping em si, porque ele usa um pipe nomeado - mais "detecção de vida"
- todas as configurações na captura de tela acima
O que fazer:
Geralmente:
Desative tempos limite inativos . 20 minutos de inatividade = boom! Novo processo na próxima solicitação recebida. Defina isso como zero.
Desativar intervalo de tempo regular - o padrão de 29 horas foi descrito como "insano", "irritante" e "inteligente" por várias partes. Na verdade, apenas dois deles são verdadeiros.
Opcionalmente Ligue DisallowRotationOnConfigChange (acima, Disable Reycling para alterações de configuração ) se você apenas não pode parar de jogar com ele - o que lhe permite alterar qualquer configuração de pool de aplicativo sem ela instantaneamente sinalizando para o trabalhador processos que ele precisa ser morto. Você precisa reciclar manualmente o pool de aplicativos para que as configurações entrem em vigor, o que permite predefinir as configurações e usar uma janela de alteração para aplicá-las no processo de reciclagem.
Como princípio geral, deixe o ping ativado . Essa é a sua rede de segurança. Eu já vi pessoas desligá-lo e, em seguida, o site trava indefinidamente às vezes, levando ao pânico ... então, se as configurações forem muito agressivas para o seu aplicativo aparentemente muito, muito, muito lento para responder, recue um pouco e veja o que você recebe, em vez de desligá-lo. (A menos que você tenha configurado o dumping no modo de falha automática para W3WPs travados por meio de seu próprio processo de monitoramento)
Isso é suficiente para fazer com que um processo bem-comportado viva para sempre. Se morrer, com certeza, será substituído. Se ele trava, ping deve pegar isso e um novo deve começar dentro de 2 minutos (por padrão; pior caso calc deve ser: até freqüência de ping + tempo limite de ping + limite de tempo de inicialização antes de os pedidos começar a trabalhar novamente).
Normalmente , a limitação da CPU não é interessante porque, por padrão, está desativada e também está configurada para não fazer nada; se estivesse configurado para interromper o processo, com certeza, isso seria um gatilho de reciclagem. Deixe isso de lado. Nota para o IIS 8.x, a otimização da CPU também se torna uma opção.
Um AppPool (IIS) não é um AppDomain (.Net) (mas pode conter um / alguns)
Mas ... então entramos na terra .Net e na reciclagem do AppDomain, que também pode causar perda de estado. (Consulte: https://blogs.msdn.microsoft.com/tess/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles/ )
Versão curta, você faz isso por tocar um arquivo web.config em sua pasta de conteúdo (novamente com a colheita!), Ou através da criação de uma pasta na pasta ou um arquivo ASPX, ou .. outras coisas ... e é sobre tão destrutivo quanto a reciclagem de um pool de aplicativos, menos os custos de inicialização do código nativo (é puramente um conceito de código gerenciado (.Net); portanto, apenas o código gerenciado acontece aqui).
O antivírus também pode acionar isso, pois verifica os arquivos web.config, causando uma notificação de alteração, causando ....