web-dev-qa-db-fra.com

Comment puis-je réchauffer ma webapp asp.net mvc après un recyclage de pool d'applications?

J'exécute une webapp ASP.NET MVC dans IIS 8.0. Mon application doit être réchauffée avant de prendre des demandes. Nous avons déjà un processus pour réchauffer automatiquement l'application lorsque nous déployons un nouveau code. Cependant, nous voyons des événements périodiques de recyclage du pool d'applications qui entraînent le non-réchauffement de l'application.

Existe-t-il une meilleure pratique pour détecter un événement de recyclage de pool d'applications et exécuter un script ou du code?

24
AgileJon

Vous pouvez faire plusieurs choses:

1. Initialisation de l'application

Vous pouvez utiliser Module d'initialisation d'application qui est fourni avec IIS 8.0

vous pouvez avoir quelque chose comme ça dans votre web.config

<applicationInitialization
     doAppInitAfterRestart="true" >
   <add initializationPage="/" />
</applicationInitialization>

Cela enverra une demande à la racine de votre application (initializationPage="/") Chaque fois que votre application démarre automatiquement.

Vous pouvez également configurer le mode de démarrage de votre pool d'applications sur Always Running, Ce qui signifie que chaque fois que IIS redémarre, il s'assurera de démarrer votre pool d'applications immédiatement (ceci si à partir du clic droit) sur votre pool d'applications puis Advanced Settings

enter image description here

et Preload pour votre site lui-même (clic droit sur le site puis Manage Site puis Advanced Settings

enter image description here

2. Désactiver le délai d'inactivité

De plus, vous pouvez désactiver idleTimeout (par défaut IIS fermera l'application après 20 minutes d'activité)) en changeant le de Idle Time-out De votre pool d'applications à 0 (infini)

enter image description here

3. Désactivez le recyclage périodique

désactivez également Regular Time Interval (minutes) par défaut IIS recyclerait votre application toutes les 29 heures.

enter image description here

For

55
ahmelsayed

D'après mon expérience, AlwaysRunning et Preload activé n'accélèrent pas beaucoup. Le temps d'attente le plus long est consacré à la compilation dynamique (qui peut être corrigée avec la précompilation aspx) et au chargement des assemblages dans la mémoire et la mise en cache.

1
zmikic