2008-12-24 18 views
30

J'ai remarqué que sur l'une de mes applications Web de production, lorsque je recyclais manuellement un pool d'applications, le processus de traitement recyclé pouvait prendre plus de 60 secondes pour être complètement détruit, basé sur l'observation dans le Gestionnaire des tâches. Cependant, si j'arrête complètement le pool d'applications, le processus de travail s'en va presque instantanément - dans les 1-2 secondes.App Pools IIS - Stop/Start vs Recycle

Alors, ma question est double:

a) Pourquoi faut-il tant de temps pour détruire le processus (et de façon plus significative, libérer les ressources par elle) utilisées/verrouillé lorsque la piscine app est plutôt recyclé de arrêté; et

b) En supposant que j'ai arrêté le trafic d'être dirigé vers le serveur, y at-il une raison de ne pas arrêter/démarrer au lieu de recycler?


Edit: Pour clarifier les choses, avant que je soit recycler ou arrêter la piscine app, j'arrête le trafic d'être envoyé au serveur en question (le serveur est en charge groupe équilibré, et je supprimer le serveur à partir de l'équilibreur de charge). Donc, en théorie, il ne devrait y avoir aucune demande venant sur le site Web au moment où je fais quelque chose au pool d'applications.


Modifier Partie Deux: Après avoir lu le lien de Igal, il me semble assez évident pour ce qui se passe. Lorsque je recycle le pool d'applications, le nouveau processus est démarré, mais puisqu'il n'y a aucun trafic, il n'enregistre pas le nouveau processus comme fonctionnant, donc il ne ferme pas l'ancien jusqu'au délai d'expiration (qui est de 90). secondes). Avec cette connaissance, il est clair pour moi que la fonctionnalité «Recycle» est spécifiquement destinée à être utilisée en cours de route sur un serveur live, et puisque je vole manuellement le trafic auparavant, je devrais plutôt utiliser stop/start.

Répondre

23

a) À cause de Overlapped Recycling. Il y a une période de temps que le "vieux" processus attend que le nouveau commence.

b) Non. Pour autant que je sache.

+0

Ce lien a répondu aux deux questions complètement, merci! –

+0

@igal Bonjour, Disons que le serveur avait une session pour John (inProc). maintenant disons que l'admin a fait 'recycle'. maintenant le Recyccling chevauché se produit. et toutes les demandes sont faites. le nouveau processus démarre. John aura-t-il maintenant le même identifiant de session? (redémarrez-la, ne l'enregistrez pas, c'est sûr, la question est pour le recyclage). –

+0

@RoyiNamir Salut. Recycler n'aidera pas. L'ID de session et les données de session sont perdues après le recyclage. –

13

Un recyclage si je me souviens correctement permet à toutes les demandes existantes de terminer alors il va recycler le pool d'applications. Un arrêt se termine simplement à l'instant précis où vous l'arrêtez.