Le Pool d'applications IIS/Redémarrage et ASP.NET
Nous sommes à l'aide de IIS7 pour l'accueil d'un asp.net application basée sur le web.
Dans cet environnement, les administrateurs et les développeurs peuvent déployer le code de l'application sur une base régulière.
Le nouveau code ou de l'application va comme un DLL à la ASP.NET dossier bin. Après le déploiement de la nouvelle DLL, IIS redémarre le processus, impact (ralentissement) tous les utilisateurs en ligne.
Est-il un moyen de configurer IIS pour exécuter le processus en arrière-plan et une fois prêt de les faire passer du vieil etat dans les nouvelles, sans impact sur les utilisateurs?!
Merci d'avance pour vos commentaires!
OriginalL'auteur sam360 | 2012-03-11
Vous devez vous connecter pour publier un commentaire.
IIS est déjà fait cela, c'est ce que le recyclage est tout au sujet. C'est le chargement de la DLL, alors que l'ancienne version de l'application est toujours en cours d'exécution. c'est seulement après cela est terminé, le recyclage est terminée.
Cependant de chargement de la DLL n'est qu'une partie de l'obtention des applications web prêt, il peut également être initiale de la charge comme le chargement/mise en cache de l'utilisateur, db etc.
Ces actions ne font pas partie du processus de recyclage, ils se produisent après que toutes les DLL de le recharger et de le recyclage est déjà terminé.
Un temps, j'ai rencontré ce problème avec une application qui a eu un énorme temps de démarrage en raison de la lourde db activité/mise en cache lors du démarrage. J'ai donc été intéressé si il y a certaines fonctionnalités qui nous permet d'exécuter du code avant de le recycler est marquée comme terminée, de sorte que la demande est d'abord considéré recyclé quand tout est prêt à fonctionner. Fondamentalement, ce que je voulais est une sorte de mise en scène de la fonctionnalité.
J'ai été en contact avec l'équipe IIS sur cette question, malheureusement ils m'ont dit qu'aucune fonctionnalité n'existe, ni est-il prévu.
Pour résoudre ce problème, vous pourriez essayer de faire ce qui suit:
Vous permet de configurer les 2 Sites avec des pools d'applications distincts. L'un d'eux est le LIVE site web de l'autre est la mise en SCÈNE de site web. Si vous souhaitez déployer changé il vous suffit de déployer pour la mise en SCÈNE de site web. Après, tout est chargé dans le cache etc. vous changez les paramètres d'URL de l'application web pour rediriger les demandes entrantes à partir du LIVE à la mise en SCÈNE. Donc le LIVE de l'un devient la nouvelle mise en SCÈNE et dans l'autre sens. La prochaine déployer ensuite aller à la nouvelle mise en SCÈNE à nouveau et ainsi de suite.
Mise à JOUR
Apparemment, ils ont créé un Module IIS qui fournit cette fonctionnalité:
Voir:
Si vous utilisez ASP.NET 4 fonction de Démarrage Automatique:
La principale différence entre l'échauffement et la fonction de Démarrage Automatique est que l'échauffement Module fait partie du processus de recyclage. Plutôt que de bloquer l'application pour les demandes, tout en exécutant le code d'initialisation.
La seule chose que vous obtenez en utilisant la fonction de Démarrage Automatique est que vous n'avez pas à attendre pour un utilisateur de frapper la page, ce qui n'aide pas votre cas.
Voir la Gu du blog:
Mise à JOUR 2:
Malheureusement le warm-up Module a été abandonné pour IIS 7 jours sur 7.5:
Il fera partie de IIS8 bien (Il s'appelle maintenant d'Initialisation de l'Application Module):
Mise à JOUR 3:
Comme l'a souligné dans les commentaires de l'Échauffement Module refait pour IIS 7.5 d'Initialisation de l'Application Module IIS 7.5 après IIS 8 a été publié:
http://www.iis.net/downloads/microsoft/application-initialization
Le warm-up Module existe toujours pour IIS 7.5 Initialisation de l'Application Module IIS 7.5: iis.net/downloads/microsoft/application-initialization
OriginalL'auteur ntziolis
La première partie de ntziolis répondre est un petit peu inexacte. Le processus de travail n'est pas d'être recyclés ou redémarré, il ne cesse de courir. Si tel était le cas, alors dans le pool commun des environnements que vous auriez des sites assommé à chaque fois qu'un nouveau a été déployé.
Lorsque vous déployez une nouvelle ASP.NET application c'est le site du "Domaine d'Application" dans le processus de travail est déchiré vers le bas, pas de la piscine processus.
En plus de la piscine, le recyclage est un tout autre concept de déploiement
À ce point dans le temps dans la vie commerciale de ASP.NET, lors d'un déploiement, un site est dans un état incohérent jusqu'à ce que le site est déployé. Il n'y a toujours pas de bonne histoire à propos de ce à partir de Microsoft en ce moment pour un seul site sur un serveur unique déploiements.
C'est pourquoi ASP.NET a la spéciale
App_Offline.htm
page. C'est là, de sorte que vous pouvez permettre à cette page, de les déployer et de les désactiver.La deuxième partie de ntziolis répondre est presque correct, mais vous n'avez pas besoin de deux sites ou deux pools d'applications. Vous avez juste besoin de deux dossiers de système de fichiers qui permet de basculer entre les dossiers physiques pour le site...si vous êtes sur un seul serveur et pas derrière un équilibreur de charge ou ARR.
Si vos sites sont sur un serveur web derrière un répartiteur de charge ou ARR puis d'avoir deux sites différents sens, vous pouvez router les demandes provenant d'un site à l'autre et round-robin sur chaque déployer.
Évidemment, si il y a une grande quantité de contenu généré par l'utilisateur (fichiers téléchargés), alors vous feriez carte un répertoire virtuel dans votre site à un emplacement commun pour ce type de données.
Dans les grands déploiements à grande échelle où votre application est en cours d'exécution à travers (par exemple) une charge équilibrée de l'environnement, vous pouvez faire plus sophistiqué des déploiements.
Pour des questions s'il vous plaît voir:
OriginalL'auteur Kev