Partager via


Paramètres de redémarrage périodique pour le recyclage du pool d’applications <periodicRestart>

Vue d’ensemble

L’élément <periodicRestart> contient des paramètres de configuration qui vous permettent de contrôler quand un pool d’applications est recyclé. Vous pouvez spécifier que les Services internet (IIS) 7 recycle le pool d’applications après un intervalle de temps (en minutes) ou à une heure spécifique chaque jour. Vous pouvez également configurer IIS pour baser le recyclage sur la quantité de mémoire virtuelle ou de mémoire physique que le processus de travail dans le pool d’applications utilise ou configure IIS pour recycler le pool d’applications une fois que le processus de travail a traité un nombre spécifique de requêtes.

Compatibilité

Version Notes
IIS 10.0 L’élément <periodicRestart> n’a pas été modifié dans IIS 10.0.
IIS 8.5 L’élément <periodicRestart> n’a pas été modifié dans IIS 8.5.
IIS 8.0 L’élément <periodicRestart> n’a pas été modifié dans IIS 8.0.
IIS 7.5 L’élément <periodicRestart> n’a pas été modifié dans IIS 7.5.
IIS 7.0 L’élément <periodicRestart> a été introduit dans IIS 7.0.
IIS 6.0 L’élément <periodicRestart> 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 des services internet (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 de services internet (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 des services internet (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 de services internet (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 des services internet (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 of the Actions pane. Under Edit Application Pool, Recycling is highlighted.

  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 of the Edit Application Pool Recycling Settings page. The Fixed Intervals section is located at the top.

  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 au moment de l’exécution que vous souhaitez qu’IIS envoie au journal des événements lorsqu’ils se produisent, puis cliquez sur Terminer.
    Screenshot of the Edit Application Pool Recycling Settings page. The scheduled times option is selected.

Configuration

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

Attributs

Attribut Description
memory Attribut uint facultatif.

Définit la quantité de mémoire virtuelle (en kilo-octets) qu’un processus de travail peut utiliser avant le recyclage du processus de travail.

La valeur par défaut est 0, ce qui désactive l’attribut.
privateMemory Attribut uint facultatif.

Définit la quantité de mémoire privée (en kilo-octets) qu’un processus de travail peut utiliser avant le recyclage du processus de travail.

La valeur par défaut est 0, ce qui désactive l’attribut.
requests Attribut uint facultatif.

Définit que le processus de travail doit être recyclé après avoir traité un nombre spécifique de demandes.

La valeur par défaut est 0, ce qui désactive l’attribut.
time Attribut timeSpan facultatif.

Définit que le processus de travail doit être recyclé une fois qu’un certain temps s’est écoulé.

La valeur par défaut est 29:00:00 (29 heures).

Éléments enfants

Élément Description
schedule Élément facultatif.

Définit la planification des redémarrages périodiques des pools d’applications.

Exemple Configuration

L’exemple de configuration suivant utilise l’élément <add> du pool d’applications 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 lorsque le pool d’applications redémarre et l’élément <processModel> configure les attributs shutdownTimeLimit et startupTimeLimit pour arrêter et démarrer les processus de travail dans le pool d’applications pendant 30 secondes chacune. 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 définissez le pool d’applications sur recyclage quotidien à 3 : 00.

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 à l’emplacement de la section 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()