Pergunta

Eu tenho um serviço WCF que requer um certo tempo de resposta (menos de 1 minuto).

Meu problema é que de vez em quando, na maioria das vezes no período da manhã o serviço leva um longo tempo para responder (às vezes mais de 2 minutos).

Eu estou pensando que isso é porque o aplicativo foi reciclado e a primeira execução deve recompilar.

Existem outras razões que isso poderia acontecer?

É possível desligar a reciclagem aplicativo? E se for, será que causam quaisquer efeitos colaterais ou instabilidade? Estou assumindo que deve haver uma razão para que aplicativos ASP.NET são definidos para reciclar.

É mais lá qualquer coisa que pode ser feito para melhorar essa primeira apresentação prazo?

Foi útil?

Solução

Basicamente as seguintes regras ditam quando um aplicativo é reciclado ou descarregado:

  1. Após o tempo App Piscina Reciclar foi alcançado -. Por padrão, esta é a cada 29 horas que eu penso
  2. Um tempo definido após o último pedido de aplicação.

Usando um keep-alive para executar ping o serviço resolveria 2, e, em seguida, você apenas tem que lidar com 1.

Dependendo da sua versão do IIS, existem maneiras ligeiramente diferentes para configurar isso.

  1. Para IIS 6
  2. Para IIS 7

O tempo ocioso fora Eu acho que seria normalmente o padrão para "infinte", mas pode ser configurado através do elemento processModel (atributo idleTimeout) de seus arquivos de configuração.

Como a primeira apresentação run - sem olhar para a sua aplicação é difícil dizer, tem de executar algo como dotTrace ou de outra profiler sobre ele?

Você está fazendo um monte de pesquisas intensivas e cache de dados em que a primeira carga? estes podem ser adiadas?

Outras dicas

Sim, você pode impedir que o AppPool da reciclagem. Outra opção seria a criação de um trabalho keep-alive para continuamente ping o serviço para manter o processo de trabalho de dormir.

problemas

Desempenho pode ser causada por qualquer coisa que você não descartam primeiro. Desde que você não descartam alguma coisa fora, ele pode ser causado por alguma coisa.

Talvez uma idéia idiota: você pode programar um aplicativo console para bater o seu serviço no exemplo 5:30 horas da manhã, para que este pedido levaria muito tempo para ser executado, e seus usuários regulares que chegam depois disso não terá esse problema?

Claro - não é lidar com a causa raiz, mas por enquanto, pode ser uma solução alternativa útil -? Não

Marc

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top