Artigo: 319947 - Última revisão: domingo, 13 de Maio de 2007 - Revisão: 3.5

Erro: Vários reinícios de aplicação do ASP.NET ocorrem cada um a cinco minutos

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Expandir tudo | Reduzir tudo

Sintomas

Quando muitos ficheiros .aspx, .ascx ou .asmx novos são propagados para um servidor, o servidor pode relatar reinícios da aplicação sucessivas durante algum tempo mais tarde. Este problema poderá aparecer de várias formas diferentes:
  • O contador de desempenho ASP.NET\Application reinicia é incrementado para cada reinício.
  • Se utilizar o estado da sessão na memória, variáveis de sessão são perdidas.
  • Estado da aplicação é perdido.
  • Application_Start e os eventos Application_End são executados repetidamente.

Causa

Por predefinição, quando actualiza ficheiros menos de 15 no ASP.NET, os ficheiros são compilados e carregados na memória com as versões antigas dos ficheiros compilados. Esta é uma funcionalidade do .NET common language runtime denominado 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 actualiza ficheiros muitos (por exemplo, mais de 30 ficheiros), se não reiniciar a aplicação para limpar as versões antigas da memória, pode ser utilizada demasiada memória. Para contornar este problema, o ASP.NET tem uma funcionalidade no qual a aplicação é reiniciada automaticamente após um número específico de ficheiros de actualização.

O reinício deverá ocorrer apenas uma vez por toda a lista de ficheiros actualizados. Após o reinício do aplicação, versões antigas não deverão residir na memória. Por este motivo, não deverá ter a aplicação ser reiniciado para recompilar novas versões dos ficheiros. No entanto, este problema ocorre quando carrega vários novos .aspx ou .ascx ficheiros para o servidor (por exemplo, 61 ficheiros). Novamente o descarregamento de servidor a aplicação quando os primeiros 15 ficheiros são compiladas e sempre que outra ficheiros 15 novamente compiladas até que o servidor atinge 61. Isto resulta em quatro Reiniciar aplicação mesmo que só seja necessário.

Resolução

Para evitar um reinício automático baseado no número de ficheiros actualizados, defina o atributo numRecompilesBeforeAppRestart no ficheiro Machine.config do predefinido de 15 para um número que é maior do que o número de ficheiros que vão ser actualizados entre reinícios da aplicação planeada. Se definiu numRecompilesBeforeAppRestart para um número grande, poderá reiniciar a aplicação manualmente para libertar memória que utilizem as versões antigas de assemblagens.

Nota : se ASP.NET consome muita memória, o ASP.NET reinicia essa aplicação automaticamente.

Se estiver a actualizar um número de ficheiros conhecido e se pretender reiniciar a aplicação automaticamente, defina numRecompilesBeforeAppRestart para um número que será apenas menor que o número de ficheiros que vão ser actualizados. Isto provoca um reinício única aplicação com um pequeno número de assemblagens antigos na memória. Por exemplo, definir numRecompilesBeforeAppRestart da seguinte forma:
        <compilation debug="false" explicit="true" numRecompilesBeforeAppRestart="50" defaultLanguage="vb">
				

Ponto Da Situação

A Microsoft confirmou que este erro ocorre nos produtos da Microsoft listados no início deste artigo.

Mais Informação

Poderá ver este comportamento com código de ASP (Active Server Pages) incorporada no qual o código ASP executável incluído no ficheiro .aspx ou .ascx. No entanto, não verá este comportamento quando utiliza o modelo de código para criar a aplicação do ASP.NET. No modelo de código, o código compilado é sob a forma de uma biblioteca de ligação dinâmica (DLL) e é colocado no directório bin para essa aplicação. Isto provoca o reinício da aplicação, para que não a ver o comportamento exacto que é mencionado neste artigo.

Referências

Para obter mais informações sobre o <processmodel> elemento, consulte a documentação do MSDN:
http://msdn2.microsoft.com/en-us/library/7w2sway1(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/7w2sway1(vs.71).aspx)
Para obter informações adicionais sobre as funcionalidades do ASP.NET, clique no número de artigo existente abaixo para visualizar o artigo na base de dados de conhecimento da Microsoft:
305140  (http://support.microsoft.com/kb/305140/EN-US/ ) INFO: Plano de ASP.NET

A informação contida neste artigo aplica-se a:
  • Microsoft ASP.NET 1.0
  • Microsoft ASP.NET 1.1
Palavras-chave: 
kbmt kbbug kbconfig kbhttpruntime kbpending KB319947 KbMtpt
Tradução automáticaTradução automática
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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 319947  (http://support.microsoft.com/kb/319947/en-us/ )