Recyclage
Le recyclage est généralement * où IIS démarre un nouveau processus en tant que conteneur pour votre application, puis donne l'ancien processus à ShutdownTimeLimit pour qu'il disparaisse de son plein gré avant d'être éliminé.
* - généralement: voir DisallowOverlappingRotation / "Désactiver le recyclage avec recouvrement"
Il est destructif en ce que le processus d'origine et toutes ses informations d'état sont ignorés. L'utilisation d'un état de session hors processus (par exemple, un serveur d'état ou une base de données, ou même un cookie si votre état est minuscule) peut vous permettre de contourner ce problème.
Mais il se chevauche par défaut, ce qui signifie que la durée d’une panne est réduite au minimum, car le nouveau processus est démarré et connecté à la file d’attente, avant que l’ancien ne soit averti "vous avez [ShutdownTimeLimit] secondes pour disparaître. Veuillez vous conformer."
Paramètres
A votre question: tous les paramètres de cette page contrôlent le recyclage d’une manière ou d’une autre. Le terme «arrêt» peut être décrit comme un «recyclage proactif» - le processus décide lui-même qu'il est temps de partir et se termine de manière ordonnée.
Le recyclage réactif est l'endroit où WAS détecte un problème et déclenche le processus (après avoir établi un W3WP de remplacement approprié).
Maintenant, voici quelques trucs qui peuvent causer le recyclage d’une forme ou d’une autre:
- un ISAPI décidant qu'il est malsain
- un module qui tombe en panne
- délai d'inactivité
- limitation du processeur
- réglage des propriétés du pool d'applications
- comme votre maman peut avoir hurlé à un moment donné: « Arrêtez la cueillette à elle, ou ça ne guérira jamais! »
- "ping" échec * pas réellement ping, car il utilise un canal nommé - plus de "détection de la vie"
- tous les paramètres de la capture d'écran ci-dessus
Que faire:
Généralement:
Désactiver les délais d'inactivité . 20 minutes d'inactivité = boum! Nouveau processus à la prochaine demande entrante. Réglez cela à zéro.
Désactiver Intervalle de temps régulier - la valeur par défaut de 29 heures a été décrite comme "insensée", "ennuyeuse" et "astucieuse" par diverses parties. En fait, seuls deux d'entre eux sont vrais.
Activez éventuellement DisallowRotationOnConfigChange (ci-dessus, Désactivez le recyclage pour les modifications de configuration ) si vous ne pouvez tout simplement pas arrêter de jouer. Cela vous permet de modifier tout paramètre de pool d'applications sans que celui-ci ne soit immédiatement signalé aux processus de travail. Vous devez recycler manuellement le pool d'applications pour que les paramètres prennent effet, ce qui vous permet de prédéfinir les paramètres, puis d'utiliser une fenêtre de modification pour les appliquer via votre processus de recyclage.
En règle générale, laissez le ping activé . C'est votre filet de sécurité. J'ai vu des gens l'éteindre, puis le site se bloque parfois indéfiniment, ce qui provoque la panique ... donc, si les paramètres sont trop agressifs pour votre application apparemment très lente à répondre très lentement, retirez-la un peu et voyez ce que vous obtenez, plutôt que de l'éteindre. (Sauf si vous avez défini une fonction de vidage en mode crash automatique pour les W3WP bloqués via votre propre processus de surveillance)
C’est assez pour qu'un processus sage se comporte pour toujours. S'il meurt, bien sûr, il sera remplacé. S'il se bloque, pinger devrait le ramassez une nouvelle devrait commencer dans les 2 minutes (par défaut, le pire cas calc devrait être: jusqu'à la fréquence de ping + délai d' attente ping + délai de démarrage avant que les demandes commencent à travailler à nouveau).
La limitation du processeur n’est normalement pas intéressante, car par défaut, elle est désactivée et elle est également configurée pour ne rien faire de toute façon. s'il était configuré pour tuer le processus, bien sûr, ce serait un déclencheur de recyclage. Laisse le. Remarque pour IIS 8.x, la limitation du processeur devient également une option.
Un AppPool (IIS) n'est pas un AppDomain (.Net) (mais peut en contenir un / des)
Mais ... alors nous entrons dans. Net, et le recyclage AppDomain, ce qui peut aussi causer une perte d'état. (Voir: https://blogs.msdn.microsoft.com/tess/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles/ )
Pour faire court, vous le faites en touchant un fichier web.config dans votre dossier de contenu (à nouveau avec le choix!), Ou en créant un dossier dans ce dossier, ou un fichier ASPX, ou .. d'autres choses ... et c'est à peu près tout aussi destructif qu’un pool d’applications recyclé, moins les coûts de démarrage du code natif (il s’agit uniquement d’un concept de code géré (.Net), de sorte que seul le code géré est traité ici).
Antivirus peut également déclencher ce problème en analysant les fichiers web.config, ce qui entraîne une notification de modification, ce qui entraîne ....