Estou desenvolvendo sites baseados na plataforma .NET. Normalmente implanto esses sites no meu IIS local, para que eu possa testá-los e ver sua funcionalidade antes de entrar no ar. No entanto, sempre que reinicio o Windows, parece que os sites demoram muito tempo para serem executados pela primeira vez.
Conheço o JIT e também estou ciente dessa pergunta , mas ela não responde à minha pergunta.
O JIT acontece toda vez que você reinicia o Windows? Está relacionado com a criação do processo w3wp.exe? Por que os sites são tão lentos para a primeira solicitação após cada reinicialização?
Respostas:
Esse problema é a compilação JIT. O pool de aplicativos precisa de tempo para construir as bibliotecas antes de poder começar a processá-las. Isso pode ser acelerado usando um script de aquecimento, mas é algo que precisa acontecer. Também depende se você está usando um site ou um projeto de aplicativo da web. Um site é JIT para cada página, portanto, o primeiro hit é lento e cada novo hit de página também tem um tempo de compilação extra. Os projetos de aplicativos da Web são pré-compilados, portanto, não devem sofrer tanto com esse impacto, mas as bibliotecas ainda precisam ser carregadas. Quanto mais bibliotecas / ferramentas você tiver, pior será esse resultado. Aqui estão alguns links que discutem o aquecimento:
http://weblogs.asp.net/gunnarpeipman/archive/2010/01/22/iis-application-warm-up-module.aspx http://blogs.iis.net/steveschofield/archive/2009/05/30 /application-pool-warm-up.aspx /programming/2063461/iis-web-applications-warmup http://sharepoint.smayes.com/2011/06/application-pool-specific-warm -up-scripts /
fonte
A reação lenta da sua primeira solicitação é que o IIS inicia / carrega apenas um site ou pool de aplicativos na primeira solicitação de entrada. E após um período fixo, nenhuma nova solicitação de entrada chega ao servidor. O IIS interrompe o site novamente (reciclagem do pool de aplicativos).
O ASP.NET 4.0 possui um novo recurso chamado inicialização automática. Com esse recurso, você pode definir um pool de aplicativos ou site individual para iniciar-se antes de qualquer solicitação. Isso é acionado no momento da inicialização (quando o IIS é iniciado) ou quando você atualiza um site ASP.NET (que interrompe o site).
Você precisa do IIS 7.5 para usar isso.
Há também uma opção para executar determinadas tarefas extras quando o início automático é iniciado, por exemplo. para pré-carregar dados no cache.
fonte
Parte do problema também é o GAC. Nas bibliotecas de locais em que será necessário verificar a segurança sempre que forem carregados - isso significa que toda uma carga de trabalho do tipo de criptografia está sendo realizada, e isso torna as coisas muito mais lentas. Houve uma conversa sobre o desempenho do WPF na MS que descreveu esse problema - a resposta deles foi "não coloque coisas no GAC se você não puder evitar"
fonte
O IIS possui um recurso irritante (às vezes) para sites de baixo tráfego. Ele recicla processos de trabalho não utilizados - que levam o primeiro usuário ao site; atraso às vezes extremamente longo (mais de 30 segundos). http://dotnettimes.wordpress.com/2014/03/24/fixing-slow-initial-load-for-iis-web-site/
fonte