Pergunta

Eu tenho notado que em um dos meus aplicativos web de produção, quando eu reciclar manualmente um pool de aplicativo, o processo de trabalho reciclado pode levar mais de 60 + segundos para realmente ser completamente destruído, com base em vê-lo no Gerenciador de tarefas. No entanto, se eu parar o pool de aplicativo completamente, o processo de trabalho vai embora quase instantaneamente -. Prazo de 1-2 segundos

Então, minha pergunta é duas vezes:

a) Por que demora tanto tempo para destruir o processo (e mais significativamente, liberar os recursos usados ??/ bloqueado por ele) quando o pool de aplicativos é reciclado em vez de parada; e

b) Supondo que eu parei de tráfego seja direcionado para o servidor, há alguma razão para não parar / iniciar em vez de reciclar?


Editar:
Para esclarecer, antes de eu quer reciclar ou parar o pool de aplicativo, o tráfego de parada I de serem enviados para o servidor em questão (o servidor está em um cluster com balanceamento de carga, e eu remover o servidor do balanceador de carga). Assim, em teoria, não deve haver pedidos que chegam ao web site no momento estou fazendo nada para o pool de aplicativo.


Edit Part Deux:
Depois de ler o link do Igal, parece bastante óbvio para mim que está acontecendo. Quando eu reciclar o pool de aplicativo, o novo processo é iniciado, mas desde que não há nenhum tráfego em tudo, não está registrando o novo processo como funcionando, por isso não encerra o antigo até que o tempo limite (que é 90 segundos).

Com esse conhecimento, é claro para mim que a funcionalidade "Reciclar" é destinado especificamente para ser usado midstream em um servidor ao vivo, e desde que eu estou descarga manualmente o tráfego de antemão, eu deveria usar paragem / arranque em vez.

Foi útil?

Solução

a) Por causa sobreposta Reciclagem . Há um período de tempo que o "velho" processo espera para o novo para começar.

b) Não. Tanto quanto eu sei.

Outras dicas

A reciclagem se bem me lembro permite que todos os pedidos existentes para terminar, então ele irá reciclar o pool de aplicativos. Uma paragem simplesmente termina-lo no instante exato em que você pará-lo.

De acordo com a este link ,

Parar - por parar um pool de aplicativos, você está instruindo todos os processos de trabalho servindo este pool de aplicativos para encerrar o IIS, e evitar quaisquer processos de trabalho adicionais sejam iniciados até o pool de aplicativos é iniciado novamente. Isto inicia uma graciosa desligamento dos processos de trabalho, com cada processo de trabalho tentativa para drenar tudo isso de pedidos e depois sair.

Se um processo de trabalho não sair dentro do período de tempo especificado pela propriedade de configuração ShutdownTimeLimit na processModel elemento da definição de cada pool de aplicativos (padrão: 90 seg) foi vigorosamente vai terminá-lo (isto não aconteceria se um depurador nativo está ligado).

Por isso, parar um pool de aplicativos é uma ação disruptiva que provoca descarga de domínios de aplicação ASP.NET, processos filho FastCGI, e perda de qualquer estado do aplicativo em processo.

Reciclagem - reciclagem de um pool de aplicativos faz com que todos os actualmente em execução IIS processos de trabalho em que pool de aplicativos para ser graciosamente desligamento, mas ao contrário de parar a piscina, novos processos de trabalho IIS pode ser iniciado sob demanda para atender os pedidos subsequentes.

A reciclagem de um pool de aplicativos é uma boa maneira de fazer com que o reset do estado do aplicativo e qualquer configuração em cache pelo trabalhador IIS processos que não são automaticamente atualizados (principalmente globais chaves de registro), sem interromper a operação do servidor. este faz a reciclagem do pool de aplicativos uma ótima alternativa para um IISRESET na maioria dos casos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top