Comment réchauffer une ASP.NET application MVC sur IIS 7.5?
Nous tenons à réchauffer une ASP.NET MVC de l'application hébergée sur IIS 7.5 serveur. L'échauffement module qui sert à être disponible à http://forums.iis.net/t/1176740.aspx a été supprimé depuis quelque temps.
La demande doit être réchauffé à chaque fois que IIS ou ASP.NET travailleur-processus redémarre pour une raison quelconque. Pendant l'échauffement, IIS doit renvoyer le code d'état HTTP démonstration de son chaud de l'etat ou de son incapacité à servir tous les clients.
Serait la création d'un fichier exécutable qui navigue à travers les pages nécessaires dans le site via HttpRequests être une bonne idée? L'exécutable peut être déclenché à partir de IProcessHostPreloadClient mise en œuvre. Il est possible de configurer IIS pour qu'il ne serait d'accepter les demandes de localhost et l'exécutable une fois fait, il peut passer de l'un à tous les clients - mais que l'interrupteur ne doit pas déclencher un IIS redémarrer (évidemment).
Est-il possible d'utiliser un Visual Studio 2010 - Web de Test de Performance pour l'échauffement d'une application au lieu de créer un manuel de l'exécutable? D'autres alternatives?
PS: L'application utilise l'Authentification par Formulaires et utilise les sessions afin de maintenir l'état de biscuit et d'autres cookies est important.
Mise à JOUR 1 - Nous sommes de l'aide .NET Framework 4.0 et Entity Framework (base de données) dans notre application. La première fois, frappe à EF requêtes sont lents. La raison derrière l'échauffement est d'obtenir ces premiers temps de frappe hors de la voie. Nous sommes déjà à l'aide de requêtes compilées dans la plupart des endroits, et nous avons mis en place de pré-compilé de vues pour les EF. La taille du modèle et de l'application est très vaste et très complexe. Réchauffer les besoins de marcher à travers de nombreuses pages pour s'assurer que compilé et non compilé EF requêtes sont exécutées au moins une fois avant de tout utilisateur obtient l'accès à l'application.
Essayez de vérifier ma solution. Il ne retourne pas d'un statut spécial de code, mais au lieu d'attendre de chauffe pour répondre aux demandes.
OriginalL'auteur Dhwanil Shah | 2011-09-12
Vous devez vous connecter pour publier un commentaire.
Microsoft a publié un module qui fait exactement ce que vous demandez. Le Initialisation de l'Application Module IIS 7.5 améliore la réactivité des sites Web par le chargement d'applications Web avant la première arrivée des demandes.
Vous pouvez spécifier une série d'Url IIS précharge avant d'accepter les demandes des utilisateurs réels. Je ne pense pas que vous pouvez obtenir une véritable connexion de l'utilisateur expereince, mais peut-être vous pouvez définir des simulé pages qui ne nécessite pas de connexion qui remplit les mêmes chauffe-vous demander?
La fonctionnalité que je pense est le plus impressionnant, c'est que ce module permet également de se chevauchaient processus de recyclage. Le tutoriel suivant de IIS 8.0 inclure une étape-par-étape sur la façon d'activer superposées processus de recyclage.
Lorsque IIS détecte qu'un processus de travail est recyclé, IIS ne pas changer le trafic sur le nouveau recyclé processus de travail jusqu'à ce que le nouveau processus de travail fin de l'exécution de tous initialisation de l'application des Url dans le nouveau processus. Cela garantit que les clients navigation de votre site web ne vois pas d'initialisation de l'application pages une fois qu'une demande est en direct et en cours d'exécution.
Cette Application IIS Initialisation du module est intégré dans IIS 8.0, mais est disponible pour téléchargement pour IIS 7.5.
OriginalL'auteur Jacob Hamacher
Vous pouvez prendre un coup d'oeil à la post suivant pour le Démarrage Automatique de la fonction de IIS 7.5 et ASP.NET 4.0.
Shah, l'échauffement se produit lorsque IIS commence à s'exécuter, c'est à dire après votre serveur redémarre et bien avant la première demande a jamais eu le temps de frapper votre application.
Serais-je capable d'accéder aux pages de mon site à partir d'un code à l'intérieur d'une mise en œuvre de IProcessHostPreloadClient?
Shah, que voulez-vous dire par accéder aux pages de mon site? Si c'est pour envoyer des requêtes HTTP à eux, alors non, vous ne serez pas en mesure de le faire à l'intérieur de votre
IProcessHostPreloadClient
mise en œuvre parce qu'IIS ne permettent pas à toutes les demandes HTTP, jusqu'à la warup processus est terminé. C'est le point de l'ensemble de la chauffe.J'ai besoin d'accéder aux pages de mon site pour réchauffer l'EF requêtes utilisées. J'ai besoin de vous connecter, naviguer, rechercher, ajouter-modifier etc. à l'aide de requêtes HTTP. Nous avons déjà le montant de base de la "normale" d'échauffement Global.asax de l'application de début de l'événement.
OriginalL'auteur Darin Dimitrov
Toute application qui génère une demande de serveur pour l'hébergé ressources peut être utilisé pour réchauffer un processus IIS. Exactement le nombre de demandes que vous avez besoin dépend de ce que les parties ont besoin de se réchauffer. Généralement warm-up est utilisé pour:
Le "warm-up" ici n'est pas quelque chose de magique. Vous avez juste besoin de la force de IIS pour servir l'URL en question. Tout ce dont vous avez mentionnées à prendre soin de cela: à l'aide d'un stress-test de l'outil de requête de l'URL, l'écriture d'un utilitaire de personnalisation de poster des requêtes HTTP, même juste script un outil comme 'wget' ou un script PowerShell pour télécharger les Url.
Autant que la restriction de l'accès à localhost, autant que je sache, dans IIS, la seule façon de changer qui vous oblige à redémarrer IIS. Vous pouvez toujours construire une pré-demande de crochet dans votre application et de maintenir l'état y, et vous avez votre warm-up de requêtes de processus, certaines URL spécifique qui permet de basculer l'état pour "ouvrir". Mais je ne suis pas sûr de ce que vous voulez accomplir. Si, d'une certaine manière, l'utilisateur n'a pas essayé d'interroger votre site avant de faire votre échauffement terminé, tout ce qui pourrait arriver, c'est votre site serait prendre un certain temps à répondre, alors ils finiraient par obtenir la page qu'ils ont demandé. Si vous avez verrouillé hors du site pendant l'échauffement, ils seraient plutôt obtenir un navigateur réseau d'erreur qui a coûté le site a été hors ligne, ce qui (pour moi) sonne bien pire.
Merci de prendre un intérêt dans le présent. Veuillez ne cocher la case "mise à JOUR de 1" pour obtenir plus de contexte sur la requête.
Nous sommes à l'aide de ASP.NET pré-compilation.
OriginalL'auteur Michael Edenfield