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
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).
Dans le volet Connexions, développez le nom du serveur, puis cliquez sur Pools d'applications.
Dans le volet Pools d’applications, sélectionnez le pool d’applications que vous souhaitez modifier.
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.
(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.
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()