O IIS 7 AppPool registra um erro após a reciclagem devido à inatividade

2

Temos o Windows 2008 RS Server executando o IIS hospedando um site ASP.NET. Esta manhã houve uma sequência estranha. Primeiro, um aviso de que o AppPool estava sendo reciclado devido à inatividade:

"A worker process with process id of '6896' serving application pool 'xxxx' was shutdown due to inactivity. Application Pool timeout configuration was set to 20 minutes. A new worker process will be started when needed."

Isso faz sentido e piadas sem configurações de tempo limite, mas 30 segundos depois vemos:

"A process serving application pool 'xxxx' terminated unexpectedly. The process id was '6896'. The process exit code was '0xc0000005'."

Encontrei um artigo da base de conhecimento mais antigo que explica uma condição em que isso pode acontecer no IIS6 devido a problemas de permissão, mas estou curioso o que pode causar isso no IIS7.5, especialmente porque não estamos vendo regularmente.

    
por Derek Dysart 19.01.2012 / 15:45

1 resposta

1

Uma coisa semelhante a esse artigo pode ser uma causa.

A mensagem de erro é basicamente "acesso negado" (qualquer coisa que termine em 05 é tipicamente "não"), o que sugere que o processo tentou fazer algo quando foi dito para ir embora e falhou.

Porque:

  • é um processo de trabalho ocioso
  • que foi dito para reciclar e
  • está terminando assim mesmo, e
  • um novo processo de trabalho é enfileirado antes que o antigo seja finalizado (na verdade, ele não será executado a menos que haja uma solicitação pendente para o mesmo conjunto; a fila HTTP.SYS será redefinida para o WAS no enquanto isso)

... deve haver um impacto mínimo no aplicativo (e zero em qualquer usuário), a menos que ele esteja tentando fazer algo maluco na finalização do appdomain ou similar.

Se estivesse fazendo isso como a conta do Pool de Aplicativos (discussão de termos), o que é realmente provável (dada a reciclagem devido a nenhum pedido), essa conta provavelmente falhou ao ler ou escrever algo em algum lugar. Bom e específico, não é?

Mais informações, por favor:

  • Você está executando o pool de aplicativos como uma conta de usuário específica ou como uma ApplicationPoolIdentity?

  • Se uma conta específica, você tem manualGroupMembership = true

    • (e, em caso afirmativo, o usuário é um membro de IIS_IUSRS? Se não estiver usando mGM = true, não é necessário, o SID para IIS_IUSRS será injetado de qualquer maneira)
por 20.01.2012 / 00:04