Question

Que puis-je faire pour faire en sorte que lorsqu'un redémarrage application / pool d'application est déclenchée, que l'application revient en ligne le plus vite possible?

Mieux encore, est-il un moyen d'empêcher le redémarrage de l'application lorsque les déclencheurs habituels se produisent? Comme la modification du web.config, global.asax ou machine.config?

Était-ce utile?

La solution

Il y aura une fonction "démarrage automatique" dans ASP.NET 4.0 ( Scott Guthrie parle à ce sujet ), mais cela ne vous aidera pas maintenant.

S'il vous plaît assurez-vous que le pool d'applications de votre site / application est en cours d'exécution dans, ne passera pas « dormir » automatiquement. Un défaut AppPool est réglé sur arrêt après 20 minutes inactivty. Si je me souviens que cela ne fait pas le site à la reconstruction, mais fait la première demande notamment plus lente.

Petite note, projet de site Web peut aussi être construire, de sorte que votre App_Code sera vide et votre dossier bin contiendra un tas de ce .dll (il suffit d'utiliser Construire> Site Web Build). Ce sera certainement fait la première demande à votre site plus rapidement. Je ne pense pas application site donnera le coup plus vite que d'un projet de site précompilé , mais il est juste plus facile à gérer.

Autres conseils

Oui, passer à des applications Web va accélérer le processus de redémarrage. Une autre chose à faire serait de rendre votre global.asax aussi propre que tout à fait possible.

Même avec les applications web, le site fera un redémarrage si l'un de ces fichiers de configuration sont modifiés ou si les assemblages dans votre changement de répertoire bin. Vous ne pouvez pas arrêter cela.

temps de redémarrage devrait être assez rapide à environ 2 à 3 secondes. Cependant, je l'ai vu certains fichiers global.asax assez complexes qui mettent en place certaines données au niveau du domaine qui a pris jusqu'à 20 secondes. Bien sûr, ils étaient prêts à payer ce prix parce qu'il a réduit certaines de leurs temps de chargement de page normale de 3 secondes à 0,1 secondes.

Principalement, nous utilisons des projets de site web, donc je suppose que commutation à des projets d'application web serait accélérer ce depuis tous les fichiers de code sont pré-compilés dans un fichier .dll.

Lorsque vous utilisez des projets de site , je pense que déplacer les fichiers App_Code dans une bibliothèque de classe externe accélérerait aussi les choses puisque le code serait pré-compilé.

Pour les projets d'application Web, vous pouvez utiliser un projet de déploiement Web ( VS2010 lien de téléchargement ) pour PreCompile le site dans une DLL similaire à un projet de site Web fait. Voir article ScottGu sur la façon d'utiliser WDPs .

J'ai un problème similaire que je suis en un site de trafic très élevé qui obtient une bonne 300+ demandes / seconde. Un redémarrage prend un bon 90 secondes au moins pour elle.

Quand je fais un changement qui redémarre le serveur, il apparaît que les stands de redémarrage jusqu'à ce que toutes les anciennes demandes (certains d'entre eux très longue course) à proximité. Je peux faire le redémarrage se produit beaucoup plus rapidement en tuant l'ancienne instance w3wp.exe manuellement.

Y at-il un moyen de forcer IIS à fermer toutes les connexions tout de suite et faire un disque redémarrage? Certains dans IIS ou paramètre asp.net pour contrôler cela?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top