Partager via


Paramètres de recyclage pour un pool d’applications <recycling>

Vue d’ensemble

L’élément <recycling> contient des paramètres de configuration qui contrôlent les conditions déclenchant le redémarrage d’un pool d’applications par IIS 7. Vous pouvez également contrôler les types d’événements écrits par IIS dans le journal des événements lorsque le pool d’applications recycle.

Vous pouvez spécifier que IIS recycle un pool d’applications à intervalles définis (par exemple, toutes les 180 minutes), à une heure spécifique chaque jour ou après que le pool d’applications ait reçu un certain nombre de demandes. Vous pouvez également configurer l’élément <recycling> pour qu’il redémarre le pool d’applications lorsque l’utilisation de la mémoire virtuelle et de la mémoire physique du processus de travail atteint un seuil spécifique.

Vous pouvez utiliser l’élément <recycling> pour spécifier deux classes d’événements à consigner dans le journal des événements lorsqu’IIS recycle un pool d’applications. La première classe contient des événements de recyclage que vous pouvez configurer, tels que ceux mentionnés dans le paragraphe précédent. La deuxième classe inclut des événements de recyclage à l’exécution, tels que les événements de recyclage à la demande, les événements de recyclage déclenchés par des modifications de configuration dans l’application ou les applications exécutées dans le pool d’applications, ou le recyclage provoqué par un filtre ISAPI (Internet Server Application Programming Interface) non sain ou une extension ISAPI.

L’élément <recycling> utilise l’attribut et l’élément enfant suivants pour implémenter ces fonctionnalités :

  • Attribut logEventOnRecycle
  • élément periodicRestart

Compatibilité

Version Notes
IIS 10.0 La valeur par défaut de l’attribut logEventOnRecycle a été modifiée dans IIS 10.0.
IIS 8.5 L’élément <recycling> n’a fait l’objet d’aucune modification dans IIS 8.5.
IIS 8.0 L’élément <recycling> n’a fait l’objet d’aucune modification dans IIS 8.0.
IIS 7.5 L’élément <recycling> n’a fait l’objet d’aucune modification dans IIS 7.5.
IIS 7.0 L’élément <recycling> a été introduit dans IIS 7.0.
IIS 6.0 L’élément <recycling> remplace les parties de la propriété de la métabase IIS 6.0 IIsApplicationPools.

Programme d’installation

L’élément <applicationPools> est inclus dans l’installation par défaut d’IIS 7.

Procédure

Comment configurer le recyclage périodique pour un pool d’applications

  1. Ouvrez le Gestionnaire Internet Information Services (IIS) :

    • Si vous utilisez Windows Server 2012 ou Windows Server 2012 R2 :

      • Dans la barre des tâches, cliquez sur Gestionnaire de serveur, cliquez sur Outils, puis sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows 8 ou Windows 8.1 :

      • Maintenez la touche Windows enfoncée, appuyez sur la lettre X, puis cliquez sur Panneau de configuration.
      • Cliquez sur Outils d’administration, puis double-cliquez sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows Server 2008 ou Windows Server 2008 R2 :

      • Cliquez sur Démarrer, placez le curseur sur Outils d’administration, puis cliquez sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows Vista ou Windows 7 :

      • Dans la barre des tâches, cliquez sur Démarrer, puis sur Panneau de configuration.
      • Double-cliquez sur Outils d’administration, puis double-cliquez sur Gestionnaire Internet Information Services (IIS).
  2. Dans le volet Connexions, développez le nom du serveur, puis cliquez sur Pools d’applications.

  3. Dans le volet Pools d’applications, sélectionnez le pool d’applications que vous souhaitez modifier.

  4. Dans le volet Actions, cliquez sur Recyclage...
    Screenshot that shows I I S Manager. Recycling is listed in the Actions pane.

  5. Dans la page Conditions de recyclage de l’assistant Modifier les paramètres de recyclage du pool d’applications, sélectionnez au moins l’une des options de la section Intervalles fixes, saisissez des valeurs dans les zones de texte appropriées, puis cliquez sur Suivant.
    Screenshot that shows the Recycling Conditions page in the Edit Application Pool Recycling Settings dialog box. Specific time is checked, and 3 A M is entered in the text box.

  6. (Facultatif) Dans la page Événements de recyclage dans le journal de l’assistant Modifier les paramètres de recyclage du pool d’applications, sélectionnez les événements de recyclage configurables et les événements de recyclage à l’exécution que vous souhaitez qu’IIS envoie au journal des événements lorsqu’ils se produisent, puis cliquez sur Terminer.
    Screenshot that shows the Recycling Events to Log page. Scheduled time is selected.

Configuration

Vous pouvez configurer l’élément <recycling> au niveau du serveur dans le fichier ApplicationHost.config.

Attributs

Attribut Description
disallowOverlappingRotation Attribut booléen facultatif.

Indique si le service WWW doit lancer un autre processus de travail pour remplacer le processus de travail existant pendant que ce dernier s’arrête. La valeur de cette propriété doit être définie sur true si le processus de travail charge un code d’application qui ne prend pas en charge plusieurs processus de travail.

La valeur par défaut est false.
disallowRotationOnConfigChange Attribut booléen facultatif.

Spécifie si le service WWW doit effectuer une rotation des processus de travail dans un pool d’applications lorsque la configuration a changé.

La valeur par défaut est false.
logEventOnRecycle Attribut d’indicateurs facultatif.

Spécifie qu’IIS doit journaliser un événement lorsqu’un pool d’applications est recyclé. La propriété logEventOnRecycle doit avoir un bit défini correspondant à la raison du recyclage si IIS doit journaliser l’événement.

L’attribut logEventOnRecycle peut avoir une ou plusieurs des valeurs possibles suivantes. Si vous spécifiez plusieurs valeurs, séparez-les par une virgule (,). Les indicateurs par défaut pour les versions d’IIS antérieures à IIS 10 sont Time, Memory et PrivateMemory ; et pour IIS 10 et versions ultérieures, ce sont Time, Requests, Schedule, Memory, IsapiUnhealthy, OnDemand, ConfigChange, et PrivateMemory ;
Valeur Description
ConfigChange Journalisez un événement lorsqu’un pool d’applications recycle en raison d’une modification de configuration.

La valeur numérique est 64.
IsapiUnhealthy Journalisez un événement lorsqu’un pool d’applications recycle après qu’une extension ISAPI signale au processus de travail qu’il est dans un état non sain.
La valeur numérique est 16.
Memory Journalisez un événement lorsqu’un pool d’applications recycle après avoir utilisé une quantité spécifiée de mémoire virtuelle.

La valeur numérique est 8.
OnDemand Journalisez un événement lorsqu’un pool d’applications est recyclé immédiatement pour corriger un problème.

La valeur numérique est 32.
PrivateMemory Journalisez un événement lorsqu’un pool d’applications recycle après avoir utilisé une quantité spécifiée de mémoire virtuelle.

La valeur numérique est 128.
Requests Journalisez un événement lorsqu’un pool d’applications recycle une fois qu’il atteint un nombre configuré de demandes.

La valeur numérique est 2.
Schedule Journalisez un événement lorsqu’un pool d’applications recycle une fois qu’il atteint une heure configurée de la journée.

La valeur numérique est 4.
Time Journalisez un événement lorsqu’un pool d’applications recycle après une heure configurée.

La valeur numérique est 1.

Éléments enfants

Élément Description
periodicRestart Élément facultatif.

Spécifie les conditions dans lesquelles les pools d’applications sont recyclés.

Exemple Configuration

L’exemple de configuration suivant utilise l’élément de pool d’applications <add> pour créer un pool d’applications nommé Contoso. L’élément <recycling> configure la journalisation des redémarrages du pool d’applications, l’élément <periodicRestart> configure le redémarrage du pool d’applications et l’élément <processModel> configure les attributs shutdownTimeLimit et startupTimeLimit d’arrêt et de démarrage des processus de travail dans le pool d’applications à 30 secondes chacun. Si ces limites de temps sont dépassées, IIS met fin au processus de travail.

<add name="Contoso">
   <recycling logEventOnRecycle="Schedule">
      <periodicRestart>
         <schedule>
            <clear />
            <add value="03:00:00" />
         </schedule>
      </periodicRestart>
   </recycling>
   <processModel identityType="NetworkService" shutdownTimeLimit="00:00:30" startupTimeLimit="00:00:30" />
</add>

Exemple de code

Les exemples de code suivants ajoutent un pool d’applications nommé Contoso à votre serveur IIS 7, puis configurent le pool d’applications pour qu’il soit recyclé quotidiennement à 3 heures du matin.

AppCmd.exe

appcmd.exe set config -section:system.applicationHost/applicationPools /+"[name='Contoso']" /commit:apphost

appcmd.exe set config -section:system.applicationHost/applicationPools /+"[name='Contoso'].recycling.periodicRestart.schedule.[value='03:00:00']" /commit:apphost

Vous pouvez également utiliser la syntaxe suivante :

appcmd.exe add apppool /name:"Contoso"

appcmd.exe set config -section:system.applicationHost/applicationPools /+"[name='Contoso'].recycling.periodicRestart.schedule.[value='03:00:00']" /commit:apphost

Remarque

Vous devez veiller à définir le paramètre commit sur apphost quand vous utilisez AppCmd.exe pour configurer ces paramètres. Cela valide les paramètres de configuration dans la section d’emplacement appropriée dans le fichier ApplicationHost.config.

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetApplicationHostConfiguration();
         ConfigurationSection applicationPoolsSection = config.GetSection("system.applicationHost/applicationPools");
         ConfigurationElementCollection applicationPoolsCollection = applicationPoolsSection.GetCollection();
         ConfigurationElement addElement = applicationPoolsCollection.CreateElement("add");
         addElement["name"] = @"Contoso";
         ConfigurationElement recyclingElement = addElement.GetChildElement("recycling");
         ConfigurationElement periodicRestartElement = recyclingElement.GetChildElement("periodicRestart");
         ConfigurationElementCollection scheduleCollection = periodicRestartElement.GetCollection("schedule");
         ConfigurationElement addElement1 = scheduleCollection.CreateElement("add");
         addElement1["value"] = TimeSpan.Parse("03:00:00");
         scheduleCollection.Add(addElement1);
         applicationPoolsCollection.Add(addElement);
         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample
   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration
      Dim applicationPoolsSection As ConfigurationSection = config.GetSection("system.applicationHost/applicationPools")
      Dim applicationPoolsCollection As ConfigurationElementCollection = applicationPoolsSection.GetCollection
      Dim addElement As ConfigurationElement = applicationPoolsCollection.CreateElement("add")
      addElement("name") = "Contoso"
      Dim recyclingElement As ConfigurationElement = addElement.GetChildElement("recycling")
      Dim periodicRestartElement As ConfigurationElement = recyclingElement.GetChildElement("periodicRestart")
      Dim scheduleCollection As ConfigurationElementCollection = periodicRestartElement.GetCollection("schedule")
      Dim addElement1 As ConfigurationElement = scheduleCollection.CreateElement("add")
      addElement1("value") = TimeSpan.Parse("03:00:00")
      scheduleCollection.Add(addElement1)
      applicationPoolsCollection.Add(addElement)
      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var applicationPoolsSection = adminManager.GetAdminSection("system.applicationHost/applicationPools", "MACHINE/WEBROOT/APPHOST");
var applicationPoolsCollection = applicationPoolsSection.Collection;

var addElement = applicationPoolsCollection.CreateNewElement("add");
addElement.Properties.Item("name").Value = "Contoso";
var recyclingElement = addElement.ChildElements.Item("recycling");
var periodicRestartElement = recyclingElement.ChildElements.Item("periodicRestart");
var scheduleCollection = periodicRestartElement.ChildElements.Item("schedule").Collection;
var addElement1 = scheduleCollection.CreateNewElement("add");
addElement1.Properties.Item("value").Value = "03:00:00";
scheduleCollection.AddElement(addElement1);
applicationPoolsCollection.AddElement(addElement);

adminManager.CommitChanges();

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set applicationPoolsSection = adminManager.GetAdminSection("system.applicationHost/applicationPools", "MACHINE/WEBROOT/APPHOST")
Set applicationPoolsCollection = applicationPoolsSection.Collection

Set addElement = applicationPoolsCollection.CreateNewElement("add")
addElement.Properties.Item("name").Value = "Contoso"
Set recyclingElement = addElement.ChildElements.Item("recycling")
Set periodicRestartElement = recyclingElement.ChildElements.Item("periodicRestart")
Set scheduleCollection = periodicRestartElement.ChildElements.Item("schedule").Collection
Set addElement1 = scheduleCollection.CreateNewElement("add")
addElement1.Properties.Item("value").Value = "03:00:00"
scheduleCollection.AddElement(addElement1)
applicationPoolsCollection.AddElement(addElement)

adminManager.CommitChanges()