Compartir a través de


Configuración de reciclaje para el <reciclaje> de un grupo de aplicaciones

Información general

El elemento <recycling> contiene opciones de configuración que controlan las condiciones que desencadenan IIS 7 para reiniciar un grupo de aplicaciones. También puede controlar los tipos de eventos que IIS escribe en el registro de eventos cuando el grupo de aplicaciones se recicla.

Puede especificar que IIS recicle un grupo de aplicaciones a intervalos establecidos (por ejemplo, cada 180 minutos), a una hora específica cada día o después de que el grupo de aplicaciones reciba un número determinado de solicitudes. También puede configurar el elemento <recycling> para reiniciar el grupo de aplicaciones cuando la memoria virtual del proceso de trabajo y el uso de memoria física alcancen un umbral específico.

Puede usar el elemento <recycling> para especificar dos clases de eventos para registrar en el registro de eventos cuando IIS recicla un grupo de aplicaciones. La primera clase contiene eventos de reciclaje que puede configurar, como los mencionados en el párrafo anterior. La segunda clase incluye eventos de reciclaje en tiempo de ejecución, como eventos de reciclaje a petición, eventos de reciclaje desencadenados por cambios de configuración en la aplicación o las aplicaciones que se ejecutan en el grupo de aplicaciones, o el reciclaje causado por un filtro de Interfaz de programación de aplicaciones para servidores de Internet (ISAPI) incorrecto o extensión ISAPI.

El elemento <recycling> usa el atributo y el elemento secundario siguientes para implementar estas características:

  • Atributo logEventOnRecycle
  • Elemento periodicRestart

Compatibilidad

Versión Notas
IIS 10.0 El valor predeterminado del atributo logEventOnRecycle se modificó en IIS 10.0.
IIS 8.5 El elemento <recycling> no se modificó en IIS 8.5.
IIS 8.0 El elemento <recycling> no se modificó en IIS 8.0.
IIS 7.5 El elemento <recycling> no se modificó en IIS 7.5.
IIS 7.0 El elemento <recycling> se introdujo en IIS 7.0.
IIS 6,0 El elemento <recycling> reemplaza partes de la propiedad de metabase IIsApplicationPools de IIS 6.0.

Configuración

La colección <applicationPools> se incluye en la instalación predeterminada de IIS 7.

Procedimientos

Configuración del reciclaje periódico para un grupo de aplicaciones

  1. Abra el Administrador de Internet Information Services (IIS):

    • Si usa Windows Server 2012 o Windows Server 2012 R2:

      • En la barra de tareas, haga clic en Administrador del servidor, en Herramientas y, a continuación, en Administrador de Internet Information Services (IIS).
    • Si usa Windows 8 o Windows 8.1:

      • Mantenga presionada la tecla Windows, presione la letra X y haga clic en Panel de control.
      • En Panel de control, haga clic en Herramientas administrativas y, a continuación, haga doble clic en Administrador de Internet Information Services (IIS).
    • Si usa Windows Server 2008 o Windows Server 2008 R2:

      • En la barra de tareas, haga clic en Inicio, seleccione Herramientas administrativas y, a continuación, haga clic en Administrador de Internet Information Services (IIS).
    • Si usa Windows Vista o Windows 7:

      • En la barra de tareas, haga clic en Inicio y, luego, haga clic en Panel de control.
      • Haga doble clic en Herramientas administrativas y, a continuación, haga doble clic en Administrador de Internet Information Services (IIS).
  2. En el panel Conexiones, expanda el nombre del equipo y, a continuación, haga clic en Grupos de aplicaciones.

  3. En el panel Grupos de aplicaciones, seleccione el grupo de aplicaciones que desea editar.

  4. En el panel Acciones, haga clic en Reciclaje....
    Screenshot that shows I I S Manager. Recycling is listed in the Actions pane.

  5. En la página Condiciones de reciclaje del Asistente para editar la configuración de reciclaje del grupo de aplicaciones, seleccione al menos una de las opciones de la sección Intervalos fijos, escriba valores en los cuadros de texto adecuados y, a continuación, haga clic en Siguiente.
    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. (Opcional) En la página Eventos de reciclaje a registro del Asistente para editar la configuración de reciclaje del grupo de aplicaciones, seleccione los eventos de reciclaje configurables y los eventos de reciclaje en tiempo de ejecución que quiere que IIS envíe al registro de eventos cuando se produzcan y, a continuación, haga clic en Finalizar.
    Screenshot that shows the Recycling Events to Log page. Scheduled time is selected.

Configuración

El elemento <recycling> se puede configurar en el nivel de servidor en el archivo ApplicationHost.config.

Atributos

Atributo Descripción
disallowOverlappingRotation Atributo Boolean opcional.

Especifica si el servicio WWW debe iniciar otro proceso de trabajo para reemplazar el proceso de trabajo existente mientras se cierra ese proceso. El valor de esta propiedad debe establecerse en true si el proceso de trabajo carga cualquier código de aplicación que no admita varios procesos de trabajo.

El valor predeterminado es false.
disallowRotationOnConfigChange Atributo Boolean opcional.

Especifica si el servicio WWW debe rotar los procesos de trabajo en un grupo de aplicaciones cuando la configuración ha cambiado.

El valor predeterminado es false.
logEventOnRecycle Atributo flags opcional.

Especifica que IIS debe registrar un evento cuando se recicla un grupo de aplicaciones. La propiedad logEventOnRecycle debe tener un bit establecido correspondiente al motivo del reciclaje si IIS va a registrar el evento.

El atributo logEventOnRecycle puede tener uno o varios de los siguientes valores posibles. Si especifica más de un valor, sepárelos con una coma (,). Las marcas predeterminadas para las versiones de IIS anteriores a IIS 10 son Time, Memory y PrivateMemory; para IIS 10 y versiones posteriores son Time, Requests, Schedule, Memory, IsapiUnhealthy, OnDemand, ConfigChange y PrivateMemory;
Valor Descripción
ConfigChange Registre un evento cuando un grupo de aplicaciones se recicla debido a un cambio de configuración.

El valor numérico es 64.
IsapiUnhealthy Registre un evento cuando un grupo de aplicaciones se recicla después de que una extensión ISAPI informe al proceso de trabajo que se encuentra en un estado incorrecto.
El valor numérico es 16.
Memory Registre un evento cuando un grupo de aplicaciones se recicla después de usar una cantidad especificada de memoria virtual.

El valor numérico es 8.
OnDemand Registre un evento cuando un grupo de aplicaciones se recicla inmediatamente para corregir un problema.

El valor numérico es 32.
PrivateMemory Registre un evento cuando un grupo de aplicaciones se recicla después de usar una cantidad especificada de memoria virtual.

El valor numérico es 128.
Requests Registre un evento cuando un grupo de aplicaciones se recicla después de alcanzar un número configurado de solicitudes.

El valor numérico es 2.
Schedule Registre un evento cuando un grupo de aplicaciones se recicla después de alcanzar una hora configurada del día.

El valor numérico es 4.
Time Registre un evento cuando un grupo de aplicaciones se recicla después de un tiempo configurado.

El valor numérico es 1.

Elementos secundarios

Elemento Descripción
periodicRestart Elemento opcional.

Especifica las condiciones en las que se reciclan los grupos de aplicaciones.

Ejemplo de configuración

En el ejemplo de configuración siguiente se usa el elemento <add> del grupo de aplicaciones para crear un nuevo grupo de aplicaciones denominado Contoso. El elemento <recycling> configura el registro para los reinicios del grupo de aplicaciones, el elemento <periodicRestart> configura cuándo se reinicia el grupo de aplicaciones y el elemento <processModel> configura los atributos shutdownTimeLimit y startupTimeLimit para apagar e iniciar los procesos de trabajo en el grupo de aplicaciones durante 30 segundos cada uno. Si se superan estos límites de tiempo, IIS finaliza el proceso de trabajo.

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

Código de ejemplo

En los ejemplos de código siguientes se agrega un grupo de aplicaciones denominado Contoso al servidor IIS 7 y, a continuación, se establece el grupo de aplicaciones en reciclaje diario a las 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

También puede usar la sintaxis siguiente:

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:

Debe asegurarse de establecer el parámetro de confirmación en apphost cuando use AppCmd.exe para configurar estas opciones. Esto confirma los valores de configuración en la sección de ubicación adecuada del archivo 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()