Explicação do ciclo de vida do aplicativo WCF no ambiente de hospedagem IIS 6

Explicação do ciclo de vida do aplicativo WCF no ambiente de hospedagem IIS 6

Olá a todos e obrigado pela leitura,

Tenho um problema de atraso em que meu aplicativo demora muito para iniciar quando chamado pela primeira vez, após um determinado período desde a última chamada. O aplicativo da web é um serviço WCF e estamos falando de um atraso de aproximadamente 18 segundos antes do início do processamento real. Agora, acredito que sei como reduzir esse atraso, então essa não é minha pergunta (de qualquer maneira, é mais um negócio de stackoverflow)

Minha pergunta é, Alguém pode me explicar por que, apesar de eu desabilitar o desligamento do processo de trabalho e reciclar o processo de trabalho, o aplicativo ainda 'desacelera' após um período indeterminado de inatividade?

Para entender isso, preciso saber mais sobre o funcionamento interno dos serviços WCF hospedados no IIS. Espero plenamente que haja uma resposta direta para isso.

Muito obrigado por qualquer ajuda que você possa oferecer, DC

Responder1

Se tudo estiver desmarcado na guia Reciclagem e Desempenho do processo de trabalho, o IIS não deverá encerrar os processos. Há alguma entrada no log de eventos que corresponda ao momento em que o processo "encerra"? Parece-me que o aplicativo WCF está potencialmente travando. O WCF não registra exceções no log de eventos como um aplicativo .NET padrão, portanto, se você não estiver gravando seus próprios logs, convém ativarRastreamento WCFpara ver se talvez esse seja o problema.

Enquanto isso, a solução rápida e feia para o seu problema pode ser criar algum tipo de teste barato ou transação somente leitura em seu serviço WCF e apenas configurar um aplicativo ou script de monitoramento para pesquisá-lo a cada X segundos para manter o processo de trabalho ativo com o código pré-JIT.

Responder2

Acredito que o problema não estava relacionado ao WCF, e a falha estava no nHibernate classificando seus mapeamentos. Eu resolvi isso compilando os arquivos de mapeamento do nHibernate para que o nHibernate não precisasse fazer isso.

informação relacionada