Impostazioni di riciclo per il riciclo di un pool <di applicazioni>

Panoramica

L'elemento <recycling> contiene le impostazioni di configurazione che controllano le condizioni che attivano IIS 7 per riavviare un pool di applicazioni. È anche possibile controllare i tipi di eventi che IIS scrive nel registro eventi quando il pool di applicazioni ricicla.

È possibile specificare che IIS ricicla un pool di applicazioni a intervalli impostati (ad esempio ogni 180 minuti), a un'ora specifica ogni giorno o dopo che il pool di applicazioni riceve un determinato numero di richieste. È anche possibile configurare l'elemento <recycling> per riavviare il pool di applicazioni quando il processo di lavoro elabora memoria virtuale e l'utilizzo della memoria fisica raggiunge una soglia specifica.

È possibile usare l'elemento <recycling> per specificare due classi di eventi per registrare il log eventi quando IIS ricicla un pool di applicazioni. La prima classe contiene eventi di riciclo che è possibile configurare, ad esempio quelli menzionati nel paragrafo precedente. La seconda classe include eventi di riciclaggio in fase di esecuzione, ad esempio eventi di riciclo su richiesta, eventi di riciclo attivati dalle modifiche alla configurazione nell'applicazione o nelle applicazioni in esecuzione nel pool di applicazioni o riciclaggio causati da un filtro isAPI (Internet Server Application Programming Interface) non integro o da un'estensione ISAPI.

L'elemento <recycling> usa l'attributo e l'elemento figlio seguenti per implementare queste funzionalità:

  • attributo logEventOnRecycle
  • Elemento periodicRestart

Compatibilità

Versione Note
IIS 10.0 Il valore predefinito dell'attributo logEventOnRecycle è stato modificato in IIS 10.0.
IIS 8,5 L'elemento <recycling> non è stato modificato in IIS 8.5.
IIS 8,0 L'elemento <recycling> non è stato modificato in IIS 8.0.
IIS 7,5 L'elemento <recycling> non è stato modificato in IIS 7.5.
IIS 7.0 L'elemento <recycling> è stato introdotto in IIS 7.0.
IIS 6.0 L'elemento <recycling> sostituisce parti della proprietà metabase IIsApplicationPools IIS 6.0.

Installazione

La <applicationPools> raccolta è inclusa nell'installazione predefinita di IIS 7.

Procedure

Come configurare il riciclo periodico per un pool di applicazioni

  1. Aprire Gestione Internet Information Services (IIS):

    • Se si usa Windows Server 2012 o Windows Server 2012 R2:

      • Nella barra delle applicazioni fare clic su Server Manager, scegliere Strumenti e quindi fare clic su Gestione Internet Information Services (IIS).
    • Se si usa Windows 8 o Windows 8.1:

      • Tenere premuto il tasto Windows, premere la lettera X e quindi fare clic su Pannello di controllo.
      • Fare clic su Strumenti di amministrazione e quindi fare doppio clic su Gestione Internet Information Services (IIS).
    • Se si usa Windows Server 2008 o Windows Server 2008 R2:

      • Nella barra delle applicazioni fare clic su Start, scegliere Strumenti di amministrazione e quindi fare clic su Gestione Internet Information Services (IIS).
    • Se si usa Windows Vista o Windows 7:

      • Nella barra delle applicazioni fare clic su Start e quindi fare clic su Pannello di controllo.
      • Fare doppio clic su Strumenti di amministrazione e quindi fare doppio clic su Gestione Internet Information Services (IIS).
  2. Nel riquadro Connessioni espandere il nome del server e quindi fare clic su Pool di applicazioni.

  3. Nel riquadro Pool di applicazioni selezionare il pool di applicazioni che si vuole modificare.

  4. Nel riquadro Azioni fare clic su Riciclo...
    Screenshot che mostra I S Manager. Il riciclo è elencato nel riquadro Azioni.

  5. Nella pagina Condizioni di riciclo della Procedura guidata Modifica impostazioni riciclo pool di applicazioni selezionare almeno una delle opzioni nella sezione Intervalli fissi , digitare i valori nelle caselle di testo appropriate e quindi fare clic su Avanti.
    Screenshot che mostra la pagina Condizioni di riciclo nella finestra di dialogo Modifica impostazioni riciclo pool di applicazioni. Ora specifica selezionata e 3 A M viene immessa nella casella di testo.

  6. (Facoltativo) Nella pagina Eventi di riciclo per registrare la procedura guidata Modifica impostazioni riciclo pool di applicazioni selezionare gli eventi di riciclo configurabili e gli eventi di riciclo in fase di esecuzione che si desidera inviare IIS al registro eventi al momento dell'esecuzione e quindi fare clic su Fine.
    Screenshot che mostra la pagina Eventi di riciclo nella pagina Log. L'ora pianificata è selezionata.

Configurazione

L'elemento <recycling> è configurabile a livello di server nel file ApplicationHost.config.

Attributi

Attributo Descrizione
disallowOverlappingRotation Attributo booleano facoltativo.

Specifica se il servizio WWW deve avviare un altro processo di lavoro per sostituire il processo di lavoro esistente mentre il processo viene arrestato. Il valore di questa proprietà deve essere impostato su true se il processo di lavoro carica qualsiasi codice dell'applicazione che non supporta più processi di lavoro.

Il valore predefinito è false.
disallowRotationOnConfigChange Attributo booleano facoltativo.

Specifica se il servizio WWW deve ruotare i processi di lavoro in un pool di applicazioni quando la configurazione è stata modificata.

Il valore predefinito è false.
logEventOnRecycle Attributo flag facoltativo.

Specifica che IIS deve registrare un evento quando un pool di applicazioni viene riciclato. La proprietà logEventOnRecycle deve avere un bit impostato corrispondente al motivo del riciclo se IIS deve registrare l'evento.

L'attributo logEventOnRecycle può avere uno o più dei valori possibili seguenti. Se si specificano più valori, separarli con una virgola (,). I flag predefiniti per le versioni di IIS precedenti a IIS 10 sono , e ; per IIS 10 e versioni successive sono TimeRequestsIsapiUnhealthyPrivateMemoryTimeConfigChangeMemoryScheduleOnDemand, Memorye ;PrivateMemory
Valore Descrizione
ConfigChange Registrare un evento quando un pool di applicazioni viene riciclato a causa di una modifica di configurazione.

Il valore numerico è 64.
IsapiUnhealthy Registrare un evento quando un pool di applicazioni viene riciclato dopo che un'estensione ISAPI segnala al processo di lavoro che si trova in uno stato non integro.
Il valore numerico è 16.
Memory Registrare un evento quando un pool di applicazioni viene riciclato dopo l'uso di una quantità specificata di memoria virtuale.

Il valore numerico è 8.
OnDemand Registrare un evento quando un pool di applicazioni viene riciclato immediatamente per correggere un problema.

Il valore numerico è 32.
PrivateMemory Registrare un evento quando un pool di applicazioni viene riciclato dopo l'uso di una quantità specificata di memoria virtuale.

Il valore numerico è 128.
Requests Registrare un evento quando un pool di applicazioni viene riciclato dopo che raggiunge un numero configurato di richieste.

Il valore numerico è 2.
Schedule Registrare un evento quando un pool di applicazioni viene riciclato dopo che raggiunge un'ora configurata del giorno.

Il valore numerico è 4.
Time Registrare un evento quando un pool di applicazioni viene riciclato dopo un'ora configurata.

Il valore numerico è 1.

Elementi figlio

Elemento Descrizione
periodicRestart Elemento facoltativo.

Specifica le condizioni in cui i pool di applicazioni vengono riciclati.

Esempio di configurazione

L'esempio di configurazione seguente usa l'elemento del pool <add> di applicazioni per creare un nuovo pool di applicazioni denominato Contoso. L'elemento <recycling> configura la registrazione per i riavvii del pool di applicazioni, l'elemento <periodicRestart> configura quando il pool di applicazioni viene riavviato e l'elemento <processModel> configura gli attributi shutdownTimeLimit e startupTimeLimit per arrestare e avviare i processi di lavoro nel pool di applicazioni per 30 secondi. Se questi limiti di tempo vengono superati, IIS termina il processo di lavoro.

<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>

Codice di esempio

Gli esempi di codice seguenti aggiungono un pool di applicazioni denominato Contoso al server IIS 7, quindi imposta il pool di applicazioni sul riciclo giornaliero alle 3:00 A.M.

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

È anche possibile usare la sintassi seguente:

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

Nota

È necessario assicurarsi di impostare il parametro commit su apphost quando si usa AppCmd.exe per configurare queste impostazioni. In questo modo le impostazioni di configurazione vengono confermate nella sezione relativa al percorso appropriato nel file 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()