Partilhar via


Solucionar problemas de falhas do pool de aplicativos em uma máquina virtual dos Serviços de Nuvem

Este artigo discute como resolver falhas do pool de aplicativos em uma VM (máquina virtual) nos Serviços de Nuvem do Microsoft Azure. Se um pool de aplicativos falhar, seu aplicativo deixará de responder.

Etapa 1: Verificar se há erros em processos que atendem a pools de aplicativos

No Visualizador de Eventos, se você selecionar Sistema de Logs>do Windows na árvore de console, poderá ver um dos seguintes eventos:

Um processo que atende ao pool de aplicativos '%1' sofreu um erro fatal de comunicação com o Serviço de Ativação de Processos do Windows. O id do processo era '%2'. O campo de dados contém o número do erro.

Um processo que atende ao pool de aplicativos '%1' foi encerrado inesperadamente. O id do processo era '%2'. O código de saída do processo era '%3'.

Esses eventos indicam claramente uma falha do pool de aplicativos. Como algo deu errado no aplicativo, o pool de aplicativos teve que ser encerrado. Depois que o pool de aplicativos é encerrado, seu processo de w3wp.exe correspondente também é encerrado. Todas as informações baseadas em cache ou sessão que você salvou no processo w3wp.exe serão apagadas.

Idealmente, quando um pool de aplicativos falha, um novo processo de w3wp.exe é gerado automaticamente para honrar as solicitações de entrada. No entanto, se o pool de aplicativos falhar mais de cinco vezes em um período de cinco minutos, o pool de aplicativos entrará em um estado parado. Você terá que reiniciar o pool de aplicativos manualmente para colocá-lo em funcionamento. Se algo semelhante ocorrer, você observará o seguinte evento nos logs do sistema no Visualizador de Eventos:

O pool de aplicativos '%1' está sendo desabilitado automaticamente devido a uma série de falhas no(s) processo(s) que atende(m) a esse pool de aplicativos.

Você pode definir essas configurações na caixa de diálogo Configurações Avançadas do pool de aplicativos, na seção Proteção Rápida contra Falhas. A propriedade Enabled tem um valor padrão de True. Se a propriedade Enabled for True, o pool de aplicativos será interrompido depois que o limite de falha for atingido dentro de um determinado tempo. O limite de falha é representado pela propriedade Maximum Failures . Essa propriedade tem um valor padrão de 5. O intervalo de tempo é representado pela propriedade Intervalo de Falha (minutos). Essa propriedade também é padronizada como 5.

Captura de tela da caixa de diálogo Configurações Avançadas do pool de aplicativos, seção Proteção Rápida contra Falhas.

Etapa 3: Capturar os arquivos de despejo de processo w3wp.exe

Depois de determinar que o aplicativo falhou, determine exatamente por que ele falhou. Você terá que capturar um arquivo de despejo do processo w3wp.exe antes de terminar. Há muitas maneiras de capturar esse arquivo. Você pode configurar o WER (Relatório de Erros do Windows), o ProcDump e o DebugDiag para capturar um arquivo de despejo de memória. Este artigo discute apenas o método DebugDiag de captura de dados.

Para baixar e instalar o DebugDiag, siga estas etapas:

  1. Acesse o site da Ferramenta de Diagnóstico de Depuração v2 e selecione Baixar.

  2. Para Escolha o download desejado, selecione a versão de arquivo apropriada do Microsoft Windows Installer (MSI) para a arquitetura do seu computador e selecione Avançar.

  3. Abra o arquivo baixado. No assistente de configuração, aceite as opções padrão e conclua a instalação do aplicativo.

Para configurar o aplicativo DebugDiag 2 Collection , siga estas etapas:

  1. Selecione Iniciar, insira DebugDiag 2 Collection e abra o aplicativo recém-instalado na lista de resultados.

  2. Na caixa de diálogo Selecionar Tipo de Regra, selecione a opção Falha e, em seguida, selecione Avançar.

  3. Na caixa de diálogo Selecionar Tipo de Destino, selecione a opção Um pool de aplicativos Web do IIS específico e selecione Avançar.

  4. Na caixa de diálogo Selecionar Destino, selecione o pool de aplicativos específico que está falhando e, em seguida, selecione Avançar. Se for aberta uma janela informando que o gerenciamento do IIS (Serviços de Informações da Internet) não está instalado e que os pools de aplicativos não serão listados, selecione OK e insira o nome do aplicativo manualmente.

  5. Na caixa de diálogo Configuração Avançada (Opcional), selecione Pontos>de Interrupção Adicionar Ponto de Interrupção.

  6. Faça as seleções a seguir para criar um novo ponto de interrupção e selecione OK.

    Campo Descrição Valor
    Expressão de deslocamento O processo de captura Ntdll!ZwTerminateProcess
    Tipo de Ação O tipo de despejo capturado Despejo de usuário completo
    Limite de ação O número de despejos a serem capturados 10
  7. Na caixa de diálogo Configurar Pontos de Interrupção, verifique se o novo item Expressão de Ponto de Interrupção é mostrado. Selecione Salvar e Fechar para retornar à caixa de diálogo Configuração Avançada (Opcional) e, em seguida, selecione Avançar para ativar o ponto de interrupção.

  8. Na caixa de diálogo Selecionar Local de Despejo e Nome da Regra (Opcional), insira um Nome da Regra e, em seguida, altere o Local do Despejo do Usuário para uma unidade e um diretório que tenham espaço livre em disco suficiente, se necessário. (O tamanho de cada arquivo de despejo corresponderá ao que é consumido pelo processo w3wp.exe na memória.)

  9. Selecione Avançar.

  10. Para ativar a regra, selecione Concluir.

Agora, a regra de travamento está em um estado ativo e a contagem de despejo de usuário é 0. Quando o problema ocorre, a contagem de despejos aumenta imediatamente e um arquivo de despejo correspondente é gerado.

Observação

Uma reciclagem normal do pool de aplicativos também pode disparar um arquivo de despejo. Isso ocorre porque, quando ele é reciclado, a PID (ID do processo) de w3wp.exe correspondente do pool de aplicativos é alterada. Isso gera um arquivo de despejo. Este arquivo é um falso positivo. Portanto, não ajudará você a analisar a falha do pool de aplicativos. Sempre que você vir um incremento na contagem de despejo de usuário, verifique os logs de eventos para ver se os eventos de falha esperados ocorreram. Se os eventos forem os esperados, o despejo capturado estará correto.

Etapa 4: Analisar os arquivos de despejo de processo w3wp.exe

Depois que o arquivo de despejo for capturado, você poderá abrir Iniciar>Análise DebugDiag 2. Este aplicativo permite analisar o arquivo de despejo de memória capturado.

Verifique se o caminho do símbolo está definido corretamente. Este é um processo de duas partes. Em DebugDiag 2 Analysis, selecione Configurações (o ícone de engrenagem). Em Caminhos de pesquisa de símbolos a serem usados para Análise, verifique se os Servidores de Símbolos Públicos _NT_SYMBOL_PATH e Microsoft estão selecionados.

Reabra a Coleção DebugDiag 2 e selecione Ferramentas>, Opções e Configurações. Em seguida, na caixa de diálogo Opções e configurações, certifique-se de que a caixa Caminho de pesquisa de símbolos para depuração (ou seja, Regras de falha) esteja definida como srv*c:\symcache*https://msdl.microsoft.com/download/symbols. Esse caminho faz com que DebugDiag baixe símbolos conforme necessário do servidor de símbolos público da Microsoft e os armazene no diretório c:\symcache .

Depois de alterar ou verificar as configurações do caminho do símbolo, você pode analisar os arquivos de despejo capturados. Para iniciar a análise, retorne a DebugDiag 2 Analysis e clique duas vezes no nome de um arquivo de despejo. Depois que o relatório for gerado, você poderá abri-lo no navegador e entender a pilha de chamadas do thread que disparou a expressão de ponto de interrupção. Leia a pilha de chamadas de baixo para cima e determine qual método ou componente disparou a falha do pool de aplicativos. Se você não conseguir encontrar uma pilha de chamadas de exceção precisa, examine mais detalhadamente a pilha de chamadas do .NET na mesma análise de arquivo de despejo.

Etapa 5: Verificar se há exceções sem tratamento no processo w3wp.exe ou WaWorkerHost.exe

Para verificar também se há exceções sem tratamento que causaram a interrupção do processo w3wp.exe ou WaWorkerHost.exe , consulte Exceções sem tratamento causam o ASP. NET sejam encerrados inesperadamente no .NET Framework.

Aviso de isenção de responsabilidade para informações de terceiros

Os produtos de terceiros mencionados neste artigo são produzidos por empresas independentes da Microsoft. A Microsoft não oferece nenhuma garantia, implícita ou não, do desempenho ou da confiabilidade desses produtos.

Entre em contato conosco para obter ajuda

Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.