Freigeben über


Wiederverwendungseinstellungen eines Anwendungspools <recycling>

Übersicht

Übersicht Das <recycling>-Element enthält Konfigurationseinstellungen, die die Bedingungen steuern, die IIS 7 zum Neustart eines Anwendungspools veranlassen. Sie können auch die Arten von Ereignissen steuern, die IIS in das Ereignisprotokoll schreibt, wenn der Anwendungspool wiederverwendet wird.

Sie können angeben, dass IIS einen Anwendungspool in festgelegten Intervallen (z. B. alle 180 Minuten), zu einem bestimmten Zeitpunkt jeden Tag oder nach Erhalt einer bestimmten Anzahl von Anforderungen wiederverwenden soll. Sie können das <recycling>-Element auch so konfigurieren, dass der Anwendungspool neu gestartet wird, wenn der virtuelle Arbeitsspeicher des Arbeitsprozesses und die Nutzung des physischen Speichers einen bestimmten Schwellenwert erreicht.

Sie können das <recycling>-Element verwenden, um zwei Klassen von Ereignissen anzugeben, die beim Wiederverwenden eines Anwendungspools durch IIS im Ereignisprotokoll protokolliert werden sollen. Die erste Klasse enthält Wiederverwendungsereignisse, die Sie konfigurieren können, z. B. die im vorherigen Absatz erwähnten. Die zweite Klasse umfasst Wiederverwertungsereignisse zur Laufzeit, wie z. B. Wiederverwertungsereignisse nach Bedarf, Wiederverwertungsereignisse, die durch Konfigurationsänderungen in der Anwendung oder in Anwendungen, die im Anwendungspool laufen, ausgelöst werden, oder Wiederverwertungsereignisse, die durch einen ungesunden ISAPI-Filter (Internet Server Application Programming Interface) oder eine ISAPI-Erweiterung verursacht werden.

Das <recycling>-Element verwendet das folgende Attribut und untergeordnete Element, um diese Features zu implementieren:

  • logEventOnRecycle-Attribut
  • periodicRestart-Element

Kompatibilität

Version Hinweise
IIS 10.0 Der Standardwert des logEventOnRecycle-Attributs wurde in IIS 10.0 geändert.
IIS 8.5 Das <recycling> Element wurde in IIS 8.5 nicht geändert.
IIS 8.0 Das <recycling> Element wurde in IIS 8.0 nicht geändert.
IIS 7.5 Das <recycling> Element wurde in IIS 7.5 nicht geändert.
IIS 7.0 Das <recycling>-Element wurde in IIS 7.0 eingeführt.
IIS 6.0 Das <recycling>-Element ersetzt Teile der IIS 6.0 IIsApplicationPools-Metabasiseigenschaft.

Setup

Die <applicationPools>-Auflistung ist in der Standardinstallation von IIS 7 enthalten.

Gewusst wie

Einrichten der regelmäßigen Wiederverwendung für einen Anwendungspool

  1. Öffnen Sie den Internet Information Services (IIS) Manager:

    • Wenn Sie Windows Server 2012 oder Windows Server 2012 R2 verwenden:

      • Klicken Sie der Taskleiste auf Server-Managerdann auf Toolsund dann auf den Internet Information Services (IIS) Manager.
    • Wenn Sie Windows 8 oder Windows 8.1 verwenden:

      • Halten Sie die Windows-Taste gedrückt, drücken Sie den Buchstaben X, und klicken Sie dann auf "Systemsteuerung".
      • Klicken Sie auf Verwaltungund doppelklicken Sie dann auf den Internet Information Services (IIS) Manager.
    • Wenn Sie Windows Server 2008 oder Windows Server 2008 R2 verwenden:

      • Klicken Sie auf der Taskleiste auf Start, zeigen Sie auf Verwaltungund dann auf den Internet Information Services (IIS) Manager.
    • Wenn Sie Windows Vista oder Windows 7 verwenden:

      • Klicken Sie auf der Taskleiste auf "Start" und dann auf "Systemsteuerung".
      • Doppelklicken Sie auf Verwaltungund doppelklicken Sie dann auf den Internet Information Services (IIS) Manager.
  2. Erweitern Sie im Bereich Verbindungen den Servernamen, und klicken Sie anschließend auf Anwendungspools.

  3. Wählen Sie im Bereich Anwendungspools den Anwendungspool aus, den Sie bearbeiten wollen.

  4. Klicken Sie im Bereich Aktionen auf Wiederverwendung....
    Screenshot that shows I I S Manager. Recycling is listed in the Actions pane.

  5. Wählen Sie auf der Seite Wiederverwendungsbedingungen des Assistenten für die Wiederverwendungseinstellungen des Anwendungspools mindestens eine der Optionen im Abschnitt Feste Intervalle aus, geben Sie Werte in die entsprechenden Textfelder ein und klicken Sie dann auf Weiter.
    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. (Optional) Wählen Sie auf der Seite Wiederverwendungsereignisse für die Protokollierung des Assistenten zum Bearbeiten der Wiederverwendungseinstellungen für den Anwendungspool die konfigurierbaren Wiederverwendungsereignisse und die Wiederverwendungsereignisse während der Laufzeit aus, die IIS beim Auftreten an das Ereignisprotokoll senden soll, und klicken Sie dann auf Fertig stellen.
    Screenshot that shows the Recycling Events to Log page. Scheduled time is selected.

Konfiguration

Das <recycling>-Element ist auf Serverebene in der Datei ApplicationHost.config konfigurierbar.

Attribute

Attribut Beschreibung
disallowOverlappingRotation Optionales boolesches Attribut.

Gibt an, ob der WWW-Dienst einen anderen Arbeitsprozess starten soll, um den vorhandenen Arbeitsprozess zu ersetzen, während dieser Prozess beendet wird. Der Wert dieser Eigenschaft sollte auf true festgelegt werden, wenn der Arbeitsprozess einen Anwendungscode lädt, der nicht mehrere Arbeitsprozesse unterstützt.

Der Standardwert ist false.
disallowRotationOnConfigChange Optionales boolesches Attribut.

Gibt an, ob der WWW-Dienst die Arbeitsprozesse in einem Anwendungspool rotieren soll, wenn sich die Konfiguration geändert hat.

Der Standardwert ist false.
logEventOnRecycle Optionales Flags-Attribut.

Gibt an, dass IIS ein Ereignis protokollieren soll, wenn ein Anwendungspool wiederverwendet wird. In der Eigenschaft logEventOnRecycle muss ein Bit gesetzt sein, das dem Grund für die Wiederverwendung entspricht, wenn der IIS das Ereignis protokollieren soll.

Das Attribut logEventOnRecycle kann einen oder mehrere der folgenden möglichen Werte aufweisen. Wenn Sie mehrere Werte angeben, trennen Sie diese durch ein Komma (,). Die Standardkennzeichnungen für Versionen von IIS vor IIS 10 sind Time, Memory und PrivateMemory; für IIS 10 und höher sind es Time, Requests, Schedule, Memory, IsapiUnhealthy, OnDemand, ConfigChange und PrivateMemory;
Wert Beschreibung
ConfigChange Protokollieren eines Ereignisses, wenn ein Anwendungspool aufgrund einer Konfigurationsänderung wiederverwendet wird.

Der numerische Wert ist 64.
IsapiUnhealthy Protokollieren eines Ereignisses, wenn ein Anwendungspool wiederverwendet wird, nachdem eine ISAPI-Erweiterung dem Arbeitsprozess gemeldet hat, dass er sich in einem ungesunden Zustand befindet.
Der numerische Wert ist 16.
Memory Protokollieren eines Ereignisses, wenn ein Anwendungspool wiederverwendet wird, nachdem er eine bestimmte Menge an virtuellem Arbeitsspeicher verwendet.

Der numerische Wert ist 8.
OnDemand Protokollieren eines Ereignisses, wenn ein Anwendungspool sofort wiederverwendet wird, um ein Problem zu beheben.

Der numerische Wert ist 32.
PrivateMemory Protokollieren eines Ereignisses, wenn ein Anwendungspool wiederverwendet wird, nachdem er eine bestimmte Menge an virtuellem Arbeitsspeicher verwendet.

Der numerische Wert ist 128.
Requests Protokollieren eines Ereignisses, wenn ein Anwendungspool wiederverwendet wird, nachdem er eine konfigurierte Anzahl von Anforderungen erreicht hat.

Der numerische Wert ist 2.
Schedule Protokollieren eines Ereignisses, wenn ein Anwendungspool wiederverwendet wird, nachdem er eine konfigurierte Tageszeit erreicht hat.

Der numerische Wert ist 4.
Time Protokollieren eines Ereignisses, wenn ein Anwendungspool nach einer konfigurierten Zeit wiederverwendet wird.

Der numerische Wert ist 1.

Untergeordnete Elemente

Element Beschreibung
periodicRestart Optionales Element.

Gibt Bedingungen an, unter denen Anwendungspools wiederverwendet werden.

Konfigurationsbeispiel

Im folgenden Konfigurationsbeispiel wird das Anwendungspoolelement <add> verwendet, um einen neuen Anwendungspool namens Contoso zu erstellen. Das Element <recycling> konfiguriert die Protokollierung für den Neustart des Anwendungspools, das Element <periodicRestart> konfiguriert, wann der Anwendungspool neu gestartet wird, und das Element <processModel> konfiguriert die Attribute shutdownTimeLimit und startupTimeLimit für das Herunterfahren und Starten der Arbeitsprozesse im Anwendungspool für jeweils 30 Sekunden. Wenn diese Zeitlimits überschritten werden, beendet IIS den Arbeitsprozess.

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

Beispielcode

Die folgenden Codebeispiele fügen einen Anwendungspool namens Contoso zu Ihrem IIS 7-Server hinzu, und legen dann den Anwendungspool zum täglichen Wiederverwenden um 3.00 Uhr fest.

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

Sie können auch die folgende Syntax verwenden:

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

Hinweis

Sie müssen unbedingt den Commitparameterapphost festlegen, wenn Sie AppCmd.exe verwenden, um diese Einstellungen zu konfigurieren. Dadurch werden die Konfigurationseinstellungen auf den entsprechenden Speicherortabschnitt in der Datei ApplicationHost.config festgelegt.

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