Configurações de reciclagem para um pool de aplicativos <recycling>
Visão geral
O elemento <recycling>
contém configurações que controlam as condições que disparam o IIS 7 para reiniciar um pool de aplicativos. Você também pode controlar os tipos de eventos que o IIS grava no log de eventos quando o pool de aplicativos é reciclado.
Você pode especificar que o IIS recicle um pool de aplicativos em intervalos definidos (como a cada 180 minutos), em um horário específico todos os dias ou depois que o pool de aplicativos receber um determinado número de solicitações. Você também pode configurar o elemento p<recycling>
ara reiniciar o pool de aplicativos quando a memória virtual do processo de trabalho e o uso de memória física atingirem um limite específico.
Você pode usar o elemento <recycling>
para especificar duas classes de eventos para fazer logon no log de eventos quando o IIS reciclar um pool de aplicativos. A primeira classe contém eventos de reciclagem que você pode configurar, como os mencionados no parágrafo anterior. A segunda classe inclui eventos de reciclagem em tempo de execução, como eventos de reciclagem sob demanda, eventos de reciclagem disparados por alterações de configuração no aplicativo ou aplicativos em execução no pool de aplicativos ou reciclagem causada por um filtro ISAPI (Internet Server Application Programming Interface) não íntegro ou extensão ISAPI.
O elemento <recycling>
usa o seguinte atributo e o elemento filho para implementar esses recursos:
- Atributo logEventOnRecycle
- Elemento periodicRestart
Compatibilidade
Versão | Observações |
---|---|
IIS 10.0 | O valor padrão do atributo logEventOnRecycle foi modificado no IIS 10.0. |
IIS 8.5 | O elemento <recycling> não foi modificado no IIS 8.5. |
IIS 8.0 | O elemento <recycling> não foi modificado no IIS 8.0. |
IIS 7.5 | O elemento <recycling> não foi modificado no IIS 7.5. |
IIS 7.0 | O elemento <recycling> foi introduzido no IIS 7.0. |
IIS 6,0 | O elemento <recycling> substitui partes da propriedade de metabase IIsApplicationPools do IIS 6.0. |
Instalação
A coleção <applicationPools>
está incluída na instalação padrão do IIS 7.
Instruções
Como configurar a reciclagem periódica para um pool de aplicativos
Abra o Gerenciador dos Serviços de Informações da Internet (IIS):
Caso você esteja usando o Windows Server 2012 ou o Windows Server 2012 R2:
- Na barra de tarefas, clique em Gerenciador do Servidor, em Ferramentas e em Gerenciador dos Serviços de Informações da Internet (IIS).
Se você estiver usando o Windows 8 ou Windows 8.1:
- Mantenha pressionada a tecla Windows, pressione a letra X e clique em Painel de Controle.
- Clique em Ferramentas Administrativas e clique duas vezes em Gerenciador dos Serviços de Informações da Internet (IIS).
Caso você esteja usando o Windows Server 2008 ou o Windows Server 2008 R2:
- Na barra de tarefas, clique em Iniciar, vá para Ferramentas Administrativas e clique em Gerenciador dos Serviços de Informações da Internet (IIS).
Se você estiver usando o Windows Vista ou Windows 7:
- Na barra de tarefas, clique em Iniciar e, depois, em Painel de Controle.
- Clique duas vezes em Ferramentas Administrativas e clique duas vezes em Gerenciador dos Serviços de Informações da Internet (IIS).
No painel Conexões, expanda o nome do servidor e clique em Pools de Aplicativos.
No painel Pools de Aplicativos, selecione o pool de aplicativos que deseja editar.
Na página Condições de Reciclagem do Assistente para Editar Configurações de Reciclagem do Pool de Aplicativos, selecione, pelo menos, uma das opções na seção Intervalos Fixos, digite valores nas caixas de texto apropriadas e, em seguida, clique em Avançar.
(Opcional) Na página Eventos de Reciclagem para Log do Assistente para Editar Configurações de Reciclagem do Pool de Aplicativos, selecione os eventos de reciclagem configuráveis e os eventos de reciclagem em tempo de execução que você deseja que o IIS envie para o log de eventos quando eles ocorrerem e, em seguida, clique em Concluir.
Configuração
O elemento <recycling>
pode ser configurado no nível do servidor no arquivo ApplicationHost.config.
Atributos
Atributo | Descrição | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
disallowOverlappingRotation |
Atributo booliano opcional. Especifica se o serviço WWW deve iniciar outro processo de trabalho para substituir o processo de trabalho existente enquanto esse processo está sendo desligado. O valor dessa propriedade deve ser definido como True se o processo de trabalho carregar qualquer código de aplicativo que não dê suporte a vários processos de trabalho. O valor padrão é false . |
||||||||||||||||||
disallowRotationOnConfigChange |
Atributo booliano opcional. Especifica se o serviço WWW deve girar processos de trabalho em um pool de aplicativos quando a configuração for alterada. O valor padrão é false . |
||||||||||||||||||
logEventOnRecycle |
Atributo de sinalizadores opcionais. Especifica que o IIS deve registrar um evento quando um pool de aplicativos é reciclado. A propriedade logEventOnRecycle deve ter um conjunto de bits correspondente ao motivo da reciclagem se o IIS for registrar o evento em log. O atributo logEventOnRecycle pode ter um ou mais dos valores possíveis a seguir. Se você especificar mais de um valor, separe-os com uma vírgula (,). Os sinalizadores padrão para versões do IIS anteriores ao IIS 10 são Time , Memory e PrivateMemory ; para IIS 10 e posterior são Time , Requests , Schedule , Memory , IsapiUnhealthy , OnDemand , ConfigChange e PrivateMemory ;
|
Elementos filho
Elemento | Descrição |
---|---|
periodicRestart |
Elemento opcional. Especifica as condições nas quais os pools de aplicativos são reciclados. |
Exemplo de configuração
O exemplo de configuração a seguir usa o elemento do pool <add>
de aplicativos para criar um novo pool de aplicativos chamado Contoso. O elemento <recycling>
configura o registro em log para reinicializações do pool de aplicativos, o elemento <periodicRestart>
é configurado quando o pool de aplicativos é reiniciado e o elemento <processModel>
configura os atributos shutdownTimeLimit e startupTimeLimit para desligar e iniciar os processos de trabalho no pool de aplicativos por 30 segundos cada. Se esses limites de tempo forem excedidos, o IIS encerrará o processo de trabalho.
<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>
Exemplo de código
Os exemplos de código a seguir adicionam um pool de aplicativos chamado Contoso ao servidor IIS 7 e, em seguida, definem o pool de aplicativos como reciclagem diária às 3h00.
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
Você também pode usar a seguinte sintaxe:
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
Observação
Defina o parâmetro commit para apphost
quando usar AppCmd.exe para definir essas configurações. Isso confirma as definições de configuração para a seção de local apropriado no arquivo 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()