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
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).
En el panel Conexiones, expanda el nombre del equipo y, a continuación, haga clic en Grupos de aplicaciones.
En el panel Grupos de aplicaciones, seleccione el grupo de aplicaciones que desea editar.
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.
(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.
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 ;
|
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()