Visão Geral
Por padrão, o IIS define parâmetros de encerramento de processos inativos e reciclagem de recursos nos Pools de Aplicativos. Isso ajuda a manter a saúde do servidor, liberando memória e derrubando sites que não estejam recebendo nova requisições a algum tempo.
Sendo assim, um site pode ser interrompido naturalmente no servidor por dois motivos comuns:
- “Tempo Limite de Ociosidade” (idleTimeout) do Pool de Aplicativos excedido
- Reciclagem de Pool de Aplicativos - Manualmente, agendada ou por limite de recursos.
Quando um site é interrompido, ele volta a funcionar automaticamente quando ocorrer uma nova requisição, ou seja, quando uma página for solicitada em navegador ou algum Web Service for consumido externamente.
No entanto, este cenário causa um problema: Um serviço sendo executado em segundo plano pelo site (no servidor), não é considerado uma requisição, e sendo assim, o processo pode ser interrompido a qualquer momento, sendo retomado apenas quando uma nova requisição for realizada.
Neste tópico, vamos descobrir como manter o site sempre ativo sem impedir fazer que o IIS recicle e reinicie processos.
Solução
Você vai precisar destes pré-requisitos do IIS para manter seu site sempre em execução:
-
Recurso “Inicialização de Aplicativo” (Application Initialization)
-
“Modo de início” (Start mode) do Pool de Aplicativos: AlwaysRunning
-
“Pre-carregamento” (Preload) habilitado no Aplicativo
Inicialização de Aplicativo
Para instalar este recurso, acesse o Gerenciamento do Servidor e marque a opção selecionada na imagem.
Esse recurso precisa ser instalado para que o parâmetro “Pre-carregamento” (Preload) que será abordado mais à frente tenha algum efeito, caso contrário a opção será listada no IIS mas não causará nenhum efeito.
Modo de início
Agora vamos configurar o parâmetro “Modo de Início” do Pool de Aplicativos.
Esse parâmetro define como o processo do Pool de Aplicativos será iniciado. Se a opção OnDemand estiver selecionada, o processo só será iniciado quando houver uma solicitação. Se a opção AlwaysRunning estiver selecionada, um novo processo será criado logo após o anterior ser eliminado.
O valor deste parâmetro precisa ser AlwaysRunning para que a opção de Pre-carregamento (Preload) que veremos a seguir funcione.
Pre-carregamento
Após nos certificarmos de que o processo do Pool de Aplicativos estará sempre ativo, é hora de realizarmos as configurações que farão com que a Aplicação (vinculada ao Pool) fique sempre ativa.
Para isso, devemos habilitar o parâmetro “Pre-carregamento” nas Configurações Avançadas da Aplicação, dentro do Web Site:
Habilitando essa opção, toda vez que o processo do Pool de Aplicativos for iniciado, o IIS vai disparar uma requisição para o site (como se um usuário estivesse acessando pelo navegador), apenas para que ele seja inicializado.
Isso vai permitir que os processos em segundo plano continuem sendo executados mesmo sem nenhum usuário conectado e além disso, quando o primeiro usuário conectar, o site já vai estar “aquecido”, não sendo necessário aguardar o tempo de carregamento da aplicação.