Pergunta

Estou desenvolvendo um site (relativamente pequeno) em ASP.Net 2.0.Também estou usando o nAnt para realizar alguns ajustes fáceis em meu projeto antes de entregar os executáveis.No seu estado atual, o site é "pré-compilado" usando

aspnet_compiler.exe -nologo -v ${Appname} -u ${target}

Percebi que depois que o pool do IIS é reiniciado (após um desligamento ocioso ou uma reciclagem), o aplicativo leva até 20 segundos antes de ficar on-line novamente (e Application_start ser alcançado).

Não tenho o mesmo problema quando estou depurando diretamente no Visual Studio (leva 2 segundos para iniciar), então estou me perguntando se o aspnet_compiler é realmente uma boa ideia.

Não consegui encontrar muita coisa no MSDN.Como você compila seus sites para produção?

Foi útil?

Solução

Certifique-se de que:

  1. Você está usando um projeto de aplicativo da Web em vez de um projeto de site da Web, isso resultará em um binário pré-compilado para o seu código por trás
  2. Você desativou a geração de código de depuração no arquivo web.config - acho que se isso for diferente de quando você usou o aspnet_compiler, o código pode ser recompilado

Se você já tentou isso, talvez possa tentar executar o ngen em sua montagem, economizando assim o tempo do JIT.

Outras dicas

Para maior capacidade de resposta, não permita que seu aplicativo seja encerrado.

O primeiro método é garantir que seja incrivelmente popular para que sempre haja alguém usando-o.

Alternativamente, buscar uma pequena página keep-alive de algum outro lugar como uma atividade agendada pode ser usado para manter seu site 'quente'.

Se o seu site for compilado como atualizável, você verá vários arquivos .ASPX em seu diretório virtual.Eles devem ser compilados na inicialização.Isso é para que você possa entrar e alterar a própria interface da web.Este é o padrão para sites e aplicativos da web.

Certifique-se de que isso esteja definido em web.config <compilation debug=false>.No meu caso, também tenho um arquivo em lote que emite solicitações Get para todas as páginas principais antes de entregá-las aos usuários (simulação de carregamento de página).

A chave é garantir que o pool de aplicativos do IIS nunca seja encerrado.É aqui que o código está realmente hospedado.Defina o "Tempo limite de inatividade" (em configurações avançadas) para algo realmente alto, como 1.440 minutos (24 horas) para garantir que não seja desligado enquanto alguém acessar seu site uma vez por dia.

Você ainda terá o tempo JIT sempre que implantar um novo código ou se esse período de tempo limite ocioso for excedido sem qualquer tráfego.

Configurando o tempo limite de inatividade do IIS 7.x

@Simão:

  • O projeto é uma aplicação web.Os sites ficam mais lentos para inicializar (eu não tinha ideia de que havia uma incidência, além da organização de código diferente)?
  • Eu verifiquei e, enquanto edito o web.config depois que o aspnet_compiler é chamado, não toco no valor de depuração (no entanto, verificarei se o site não é mais rápido para inicializar se eu não tocar no web.config, apenas para fazer claro)

(E com certeza darei uma olhada no ngen, não conhecia essa ferramenta.)

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