Win2k8R2 / IIS 7.5 - usuários recebendo resposta 503, nenhum erro 503 relatado em logs

5

Eu tenho dois servidores da web com conteúdo espelhado. Há um balanceador de carga sentado na frente deles.

Começando ontem nós estamos pegando pessoas reclamando sobre 503 erros. Não consigo encontrar nenhum erro 503 no arquivo de log do IIS. No entanto, o host do servidor está dizendo que esses erros ocorrem devido a erros de .Net em nosso site que estão fazendo com que o pool de aplicativos seja reciclado.

Eles apontaram vários erros no log de eventos do aplicativo do Windows que se parecem com isso:

Log Name:      Application
Source:        ASP.NET 4.0.30319.0
Date:          3/31/2012 8:35:37 PM
Event ID:      1309
Task Category: Web Event
Level:         Warning
Keywords:      Classic
User:          N/A
Computer:      6251.local
Description:
Event code: 3005 
Event message: An unhandled exception has occurred. 
Event time: 3/31/2012 8:35:37 PM 
Event time (UTC): 4/1/2012 1:35:37 AM 
Event ID: e7a580c7b38545cca3416a8595408f24 
Event sequence: 97 
Event occurrence: 1 
Event detail code: 0 

Application information: 
    Application domain: /LM/W3SVC/2/ROOT-1-129777167518960645 
    Trust level: Full 
    Application Virtual Path: / 
    Application Path: C:\inetpub\wwwroot\mywebsite\ 
    Machine name: 6252 

Process information: 
    Process ID: 20000 
    Process name: w3wp.exe 
    Account name: IIS APPPOOL\MyAppPool

Em particular, eles estão dizendo que o nome da conta em "Informações do processo" indica que o pool de aplicativos está reciclando. Eles disseram que se o pool de aplicativos não fosse reciclado, o nome da conta seria a pasta onde os arquivos do site estão localizados.

Eu verifiquei as configurações do pool de aplicativos - ele está pronto para ser reciclado a cada 29 horas. E a proteção rápida contra falhas é definida como o padrão de 5 falhas em 5 minutos. Mas eu não vi 5 falhas no log de eventos no curto espaço de tempo.

Alguém pode me ajudar a confirmar se as 503 respostas estão de fato sendo geradas pela reciclagem de pools de aplicativos? Ou esses erros vêm de algum outro lugar? Meu palpite na época era que seu balanceador de carga era o que realmente retornava o erro 503. Mas isso foi apenas um palpite.

    
por merk 01.04.2012 / 21:31

2 respostas

12

Você mencionou "Arquivo de registro do IIS" (singular), mas há sempre dois registros que precisa avaliar:

  • W3SVCnn efetua logs (C: \ Inetpub \ Logs) do processo de trabalho do site e
  • Logs HTTPERR (C: \ Windows \ System32 \ Logfiles \ HTTPERR) do HTTP.SYS, que roteia solicitações para processos de trabalho e fornece uma fila no modo kernel projetada para armazenar em buffer clientes de alterações de processos de trabalho (como reciclagem )

503s são muito mais propensos a aparecer em logs HTTPERR, juntamente com um motivo para falha, porque eles são mais propensos a refletir uma falha de HTTP.SYS para se comunicar com o processo de trabalho (ou um estouro de fila, o que equivale a uma coisa semelhante).

Consulte também o link - não tenho certeza do motivo de "Corrigir" quando o artigo descreve o que o registro faz e ( na parte inferior) as razões pelas quais ele pode registrar uma falha.

Um pouco mais

Existem duas filas na maioria das estruturas de aplicativos - a fila de solicitações HTTP.SYS (no modo kernel) e uma fila de solicitações no modo de usuário. Se uma estrutura de modo de usuário (como ASP.Net) enfileira solicitações internamente, a falha de um processo de trabalho resultará em 503 (ou, na melhor das hipóteses, 500) para todas as solicitações enfileiradas, fazendo com que o HTTP.SYS considere essas solicitações como abandonado e irrecuperável.

Se o seu aplicativo falhar com exceções não tratadas, será necessário corrigir isso - não há nada que a arquitetura do IIS possa fazer para isolar {lotes de solicitações a bordo} do {aplicativo em andamento} e você receberá algum tipo de erro comunicada ao cliente - A reciclagem garante que haja um novo processo de trabalho pronto para atender à segunda tentativa.

    
por 02.04.2012 / 01:13
0

Obrigado tristanK pela sua resposta. eu não sabia sobre os logs do httperr.

Neste caso específico, o cliente solicitou um terceiro servidor adicionado em rotação com o balanceador de carga, mas o cliente nunca me disse. Então, esse terceiro servidor estava basicamente em branco. Assim, sempre que o balanceador de carga envia uma solicitação para ele, tenho certeza de que algo estranho aconteceu.

    
por 03.04.2012 / 03:09