Recyclage
Le recyclage consiste généralement* à ce que IIS démarre un nouveau processus en tant que conteneur pour votre application, puis abandonne l'ancien processus à ShutdownTimeLimit
de s'en aller de son plein gré avant d'être tué.
*- habituellement : voir DisallowOverlappingRotation
/ "Désactiver le recyclage par chevauchement".
Il est destructeur En effet, le processus d'origine et toutes ses informations d'état sont supprimés. L'utilisation d'un état de session hors processus (par exemple, le 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 c'est par défaut chevauché - ce qui signifie que la durée d'une interruption est réduite au minimum parce que le nouveau processus démarre et est relié à la file d'attente des demandes, avant que l'ancien processus ne soit averti "vous avez [ ShutdownTimeLimit
] secondes pour s'en aller. Veuillez vous y conformer."
Paramètres
Pour répondre à votre question : tous les paramètres de cette page contrôlent le recyclage d'une manière ou d'une autre. L'"arrêt" pourrait être décrit comme un "recyclage proactif" - où le processus lui-même décide qu'il est temps de partir, et sort de manière ordonnée.
Le recyclage réactif consiste à ce que le WAS détecte un problème et lance le processus (après avoir établi un W3WP de remplacement approprié).
Maintenant, voici quelques trucs qui peuvent causer un recyclage d'une forme ou d'une autre :
- un ISAPI décidant qu'il est malsain
- tout module se bloque
- délai d'inactivité
- limitation du nombre de processeurs
- ajustement des propriétés du pool d'applications
- comme ta mère mai ont crié à un moment donné : "Arrêtez cueillir ou ça ne s'améliorera jamais !"
- échec du "ping" * pas vraiment de ping à proprement parler, car il utilise un tuyau nommé - plutôt une "détection de vie".
- tous les paramètres de la capture d'écran ci-dessus
Ce qu'il faut faire :
En général :
-
Désactiver Délais d'inactivité . 20 minutes d'inactivité = boom ! L'ancien processus a disparu ! Nouveau processus à la prochaine demande entrante. Mettez ça à zéro.
-
Désactiver Intervalle de temps régulier - le défaut de 29 heures a été décrit comme "insensé", "ennuyeux" et "intelligent" par diverses parties. En fait, seuls deux de ces qualificatifs sont vrais.
-
En option, Allumez DisallowRotationOnConfigChange (ci-dessus, Désactiver le recyclage pour les changements de configuration ) si vous ne pouvez pas vous empêcher de jouer avec - cela vous permet de modifier n'importe quel paramètre du pool d'applications sans qu'il signale instantanément aux processus de travail qu'il doit être tué. 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, quitter pinging activé . C'est votre filet de sécurité. J'ai vu des gens qui l'ont désactivé, et ensuite le site se bloque indéfiniment parfois, conduisant à la panique... donc si les paramètres sont trop agressifs pour votre application apparemment très lente à répondre, diminuez-les un peu et voyez ce que vous obtenez, plutôt que de le désactiver. (A moins que vous n'ayez mis en place un dumping automatique en mode crash pour les W3WP bloqués par votre propre processus de surveillance).
C'est suffisant pour qu'un processus bien conduit vive pour toujours. S'il meurt, bien sûr, il sera remplacé. S'il se bloque, le ping devrait le détecter et un nouveau devrait démarrer dans les 2 minutes (par défaut ; dans le pire des cas, le calcul devrait être : jusqu'à fréquence de ping + délai d'attente pour le ping + limite de temps de démarrage avant que les demandes ne recommencent à fonctionner).
La limitation du CPU n'est pas normalement intéressant, parce que par défaut il est désactivé, et il est aussi configuré 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. Laissez-la désactivée. Notez que pour IIS 8.x, l'étranglement du processeur devient également une option.
Un AppPool (IIS) n'est pas un AppDomain (.Net) (mais peut en contenir un ou plusieurs).
Mais... ensuite nous entrons dans le monde de .Net, et App Domaine le recyclage, qui peut également entraîner une perte d'état. (Voir : https://blogs.msdn.microsoft.com/tess/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles/ )
Version courte, vous faites cela en touchant un fichier web.config dans votre dossier de contenu ( encore une fois avec la cueillette ! ), ou en créant un dossier dans ce dossier, ou un fichier ASPX, ou ... d'autres choses... et c'est à propos de aussi destructeur qu'un recyclage d'App Pool, moins les coûts de démarrage du code natif (il s'agit d'un concept purement de code géré (.Net), donc seule l'initialisation du code géré a lieu ici).
Un antivirus peut également déclencher ce problème en analysant les fichiers web.config, ce qui entraîne une notification de modification, provoquant ainsi.....
0 votes
Où avez-vous obtenu la capture d'écran ci-dessus avec les paramètres pour IIS ?
1 votes
C'est la feuille de propriétés du pool d'applications avancé.