Erro: Vários reinícios do aplicativo ASP.NET ocorrem cada um a cinco minutos

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 319947
Sintomas
Quando vários arquivos .aspx, .ascx ou .asmx novos sejam propagados para um servidor, o servidor pode relatar reinicializações do aplicativo sucessivas por algum tempo posteriormente. Esse problema pode aparecer de diversas maneiras:
  • O contador de desempenho ASP.NET\Application reinicia é incrementado para cada reinicialização.
  • Se você usar o estado da sessão na memória, variáveis de sessão serão perdidas.
  • Estado do aplicativo será perdido.
  • Application_Start e Application_End eventos são executados repetidamente.
Causa
Por padrão, quando você atualizar arquivos menos de 15 no ASP.NET, os arquivos são compilados e carregados na memória com as versões antigas de arquivos compilados. Esse é um recurso do .NET common language runtime chamado execução lado a lado.

No entanto, as versões antigas do código compilado permanecem na memória indefinidamente com execução lado a lado. Quando você atualiza vários arquivos (por exemplo, mais de 30 arquivos), se você não reiniciar o aplicativo para limpar as versões antigas da memória, muita memória pode ser usada. Para contornar esse problema, o ASP.NET possui um recurso em que o aplicativo é reiniciado automaticamente após um determinado número de arquivos é atualizado.

A reinicialização ocorra somente uma vez para toda a lista de arquivos atualizados. Após a reinicialização do aplicativo, versões antigas não devem residir na memória. Portanto, o aplicativo não deverá ser reiniciado para recompilar novas versões de arquivos. No entanto, esse problema ocorre quando você carrega arquivos muitos novos de .aspx ou .ascx para o servidor (por exemplo, 61 arquivos). Descarrega servidor o aplicativo quando os arquivos primeiro 15 são recompilados e sempre que outro arquivos 15 são recompilados até que o servidor atingir 61. Isso resulta em quatro reinicializações do aplicativo, mesmo que seja necessário apenas um.
Resolução
Para evitar uma reinicialização automática com base no número de arquivos atualizados, defina o atributo numRecompilesBeforeAppRestart no arquivo Machine.config do padrão de 15 para um número que é maior do que o número de arquivos que serão atualizados entre reinicializações do aplicativo planejada. Se você definir numRecompilesBeforeAppRestart como um número grande, convém reiniciar o aplicativo manualmente para liberar a memória que usam as versões antigas dos assemblies.

Observação : se ASP.NET consome muita memória, ASP.NET reinicia automaticamente esse aplicativo.

Se você estiver atualizando um número conhecido de arquivos e se você deseja reiniciar o aplicativo automaticamente, definir numRecompilesBeforeAppRestart para um número que é apenas menor do que o número de arquivos que serão atualizados. Isso faz com que uma reinicialização de único aplicativo com um pequeno número de assemblies antigos na memória. Por exemplo, definir numRecompilesBeforeAppRestart da seguinte forma:
        <compilation debug="false" explicit="true" numRecompilesBeforeAppRestart="50" defaultLanguage="vb">				
Situação
A Microsoft confirmou que esse é um problema nos produtos da Microsoft listados no começo deste artigo.
Mais Informações
Você pode ver esse comportamento com código de Active Server Pages (ASP) in-line no qual o código ASP executável é no arquivo .aspx ou .ascx. No entanto, você não vir esse comportamento quando você usa o modelo code-behind para criar o aplicativo ASP.NET. No modelo code-behind, o código compilado é na forma de uma biblioteca de vínculo dinâmico (DLL) e é colocado no diretório bin do aplicativo. Isso faz com que a reinicialização do aplicativo, para que você não ver o comportamento exato mencionado neste artigo.
Referências
Para obter mais informações sobre o <processmodel> elemento, consulte a documentação do MSDN: Para obter informações adicionais sobre recursos do ASP.NET, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
305140INFO: Guia de ASP.NET
intervalo de 1 minuto

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 319947 - Última Revisão: 05/13/2007 05:10:05 - Revisão: 3.5

Microsoft ASP.NET 1.0, Microsoft ASP.NET 1.1

  • kbmt kbbug kbconfig kbhttpruntime kbpending KB319947 KbMtpt
Comentários