Question

J'ai remarqué que l'une de mes applications web de production, quand je recycle manuellement un pool d'application, le processus de travail recyclé peut prendre plus de plus de 60 secondes pour être complètement détruit en fait, basée sur l'observation dans le Gestionnaire des tâches. Cependant, si j'arrête la piscine app complètement, le processus de travail disparaît presque instantanément -. Dans les 1-2 secondes

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 utilisées / verrouillés par elle) lorsque le pool d'application est recyclée au lieu d'arrêté; et

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


Edit:  Pour clarifier, avant que je soit recycler ou d'arrêter la piscine app, j'arrête le trafic d'être envoyé au serveur en question (le serveur est une charge équilibrée groupe, et je supprimer le serveur de l'équilibrage de charge). Donc, en théorie, il devrait y avoir aucune demande à venir sur le site Web au moment où je suis en train de faire quoi que ce soit à la piscine de l'application.


Modifier Partie Deux:  Après avoir lu le lien de Igal, il me semble assez évident pour ce qui se passe. Quand je recycle le pool d'application, le nouveau processus est démarré, mais comme il n'y a pas de trafic du tout, il n'enregistre pas le nouveau processus de fonctionnement, il ne ferme pas l'ancien jusqu'à ce que le délai d'attente (qui est 90 seconde).

Avec cette connaissance, il est clair pour moi que la « recycler » fonctionnalité est spécifiquement destiné à être utilisé en cours de route sur un serveur en direct, et depuis que je suis la vidange manuelle radioguidage, j'utiliser stop / start à la place.

Était-ce utile?

La solution

a) En raison de chevauché Recycling. Il y a une période de temps que le processus « vieux » attend le nouveau commencer.

b) Non. Pour autant que je sais.

Autres conseils

Un recyclage si je me souviens bien permet à toutes les demandes existantes pour finir il recycle le pool d'applications. Un arrêt se termine simplement à l'instant précis que vous arrêtiez.

Selon ce lien ,

  

Arrêter - en arrêtant un pool d'applications, vous instruisez tous les processus de travail IIS servant ce pool d'applications de fermer,   et éviter tout processus de travail supplémentaires soient mis en route avant   le pool d'applications est relancée. Cela déclenche une gracieuse   arrêt des processus de travail, chaque processus de travail en essayant   pour drainer l'ensemble de ses demandes et puis la sortie.

     

Si un processus de travail ne sort pas dans le laps de temps spécifié   par la propriété de configuration shutdownTimeLimit dans le processmodel   élément de définition de chaque pool d'applications (par défaut: 90 sec), WAS   prendra fin avec force (cela ne se produit pas si un débogueur natif   est fixé).

     

Par conséquent, arrêter un pool d'applications est une action perturbatrice qui   les causes déchargent des domaines d'application ASP.NET, processus enfants FastCGI,   et perte d'un état de l'application en cours.

     

Recyclage - recyclage d'un pool d'applications en cours d'exécution toutes les causes des processus de travail IIS dans ce pool d'applications pour être avec élégance   arrêt, mais contrairement à l'arrêt de la piscine, de nouveaux processus de travail IIS peut   lancés à la demande pour traiter les demandes ultérieures.

     

Le recyclage d'un pool d'applications est une bonne façon de provoquer la remise à zéro   état de l'application et toute configuration en cache par le travailleur IIS   processus qui ne soit pas mise à jour automatiquement (la plupart du temps global   clés de registre), sans perturber le fonctionnement du serveur. Cette   rend le recyclage du pool d'applications une excellente alternative à un   Iisreset dans la plupart des cas.

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