Pergunta

O que posso fazer para garantir que, quando um reinício de um conjunto de aplicativos/aplicativo for acionado, o aplicativo retorne o mais rápido possível on -line?

Melhor ainda, existe uma maneira de impedir que o aplicativo seja reiniciado quando os gatilhos usuais ocorrem? Como modificar o web.config, global.asax ou machine.config?

Foi útil?

Solução

Haverá um recurso de "iniciação automática" no ASP.NET 4.0 (Scott Guthrie fala sobre isso), mas isso não vai te ajudar agora.

Certifique -se de que o pool de aplicativos no seu site/aplicativo esteja sendo executado, não vá para "dormir" automaticamente. Um AppPool padrão está definido para desligar após 20 minutos de inatividade. Pelo que me lembro, isso não torna o site se reconstruir, mas torna a primeira solicitação notavelmente mais lenta.

Nota pequena, um Projeto do site Também pode ser construído, para que seu app_code esteja vazio e sua pasta bin conterá um monte de .dll's (basta usar o site Build> Build). Definitivamente, isso fará com que a primeira solicitação para o seu site mais rapidamente. Eu não acho um Aplicativo do site vai dar um chute mais rápido do que um pré -compilado Projeto do site, mas é apenas mais fácil de gerenciar.

Outras dicas

Sim, a mudança para os aplicativos da Web acelerará o processo de reinicialização. Outra coisa a fazer seria tornar o seu global.asax o mais limpo possível.

Mesmo com os aplicativos da Web, o site fará uma reinicialização se algum desses arquivos de configuração for modificado ou se os conjuntos na sua alteração no diretório do bin. Você não pode parar com isso.

Os tempos de reinicialização devem ser bem rápidos em torno de 2 a 3 segundos. No entanto, eu vi alguns arquivos globais bastante complicados que configuraram alguns dados de nível de domínio que levaram até 20 segundos. Obviamente, eles estavam dispostos a pagar esse preço porque reduziu alguns dos tempos de carregamento normal da página de 3 segundos para 0,1 segundo.

Principalmente, usamos projetos de sites, então presumo que Mudando para projetos de aplicativos da web aceleraria isso, pois todos os arquivos de código são pré-compilados em um .dll.

Ao usar os projetos do site, Eu pensaria que Movendo arquivos app_code para uma biblioteca de classe externa também aceleraria as coisas, pois o código seria pré-compilado.

Para projetos de aplicativos da web, você pode usar um projeto de implantação da web (VS2010 Download Link) para pré -compilar o site em uma DLL semelhante a um projeto de site. Veja o Artigo de Scottgu sobre como usar WDPs.

Eu tenho um problema semelhante, pois estou executando um site de tráfego muito alto que recebe mais de 300 solicitações/segundo. Um reinício leva 90 segundos pelo menos para isso.

Quando faço uma alteração que reinicia o servidor, parece que o reinício para até que todas as solicitações antigas (algumas delas muito longas) fecham. Eu posso fazer o reinício acontecer muito mais rápido matando a antiga instância w3wp.exe manualmente.

Existe alguma maneira de forçar o IIS a fechar todas as conexões imediatamente e fazer um reinício duro? Alguma configuração no IIS ou asp.net para controlar isso?

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