Compartilhar via


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

  1. 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).
  2. No painel Conexões, expanda o nome do servidor e clique em Pools de Aplicativos.

  3. No painel Pools de Aplicativos, selecione o pool de aplicativos que deseja editar.

  4. No painel Ações, clique em Reciclar...
    Screenshot that shows I I S Manager. Recycling is listed in the Actions pane.

  5. 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.
    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) 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.
    Screenshot that shows the Recycling Events to Log page. Scheduled time is selected.

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;
Valor Descrição
ConfigChange Registre um evento quando um pool de aplicativos for reciclado devido a uma alteração de configuração.

O valor numérico é 64.
IsapiUnhealthy Registre um evento quando um pool de aplicativos for reciclado após uma extensão ISAPI relatar ao processo de trabalho que ele está em um estado não íntegro.
O valor numérico é 16.
Memory Registre um evento quando um pool de aplicativos for reciclado depois de usar uma quantidade especificada de memória virtual.

O valor numérico é 8.
OnDemand Registre um evento quando um pool de aplicativos for reciclado imediatamente para corrigir um problema.

O valor numérico é 32.
PrivateMemory Registre um evento quando um pool de aplicativos for reciclado depois de usar uma quantidade especificada de memória virtual.

O valor numérico é 128.
Requests Registre um evento quando um pool de aplicativos for reciclado depois de atingir um número configurado de solicitações.

O valor numérico é 2.
Schedule Registre um evento quando um pool de aplicativos for reciclado depois de atingir uma hora configurada do dia.

O valor numérico é 4.
Time Registre um evento quando um pool de aplicativos for reciclado após um horário configurado.

O valor numérico é 1.

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