Compartilhar via


Configurações de reinicialização periódica para a reciclagem do pool de aplicativos <periodicRestart>

Visão geral

O elemento <periodicRestart> contém configurações que permitem controlar quando um pool de aplicativos é reciclado. Você pode especificar que os Serviços de Informações da Internet (IIS) 7 reciclam o pool de aplicativos após um intervalo de tempo (em minutos) ou em um horário específico todos os dias. Você também pode configurar o IIS para basear a reciclagem na quantidade de memória virtual ou memória física que o processo de trabalho no pool de aplicativos está usando ou configurar o IIS para reciclar o pool de aplicativos depois que o processo de trabalho tiver processado um número específico de solicitações.

Compatibilidade

Versão Observações
IIS 10.0 O elemento <periodicRestart> não foi modificado no IIS 10.0.
IIS 8.5 O elemento <periodicRestart> não foi modificado no IIS 8.5.
IIS 8.0 O elemento <periodicRestart> não foi modificado no IIS 8.0.
IIS 7.5 O elemento <periodicRestart> não foi modificado no IIS 7.5.
IIS 7.0 O elemento <periodicRestart> foi introduzido no IIS 7.0.
IIS 6,0 O elemento <periodicRestart> 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 of the Actions pane. Under Edit Application Pool, Recycling is highlighted.

  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 of the Edit Application Pool Recycling Settings page. The Fixed Intervals section is located at the top.

  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 of the Edit Application Pool Recycling Settings page. The scheduled times option is selected.

Configuração

O elemento <periodicRestart> pode ser configurado no nível do servidor no arquivo ApplicationHost.config.

Atributos

Atributo Descrição
memory Atributo uint opcional.

Especifica a quantidade de memória virtual (em quilobytes) que um processo de trabalho pode usar antes que o processo de trabalho seja reciclado.

O valor padrão é 0, que desabilita o atributo.
privateMemory Atributo uint opcional.

Especifica a quantidade de memória privada (em quilobytes) que um processo de trabalho pode usar antes de ser reciclado.

O valor padrão é 0, que desabilita o atributo.
requests Atributo uint opcional.

Especifica que o processo de trabalho deve ser reciclado depois que ele processar um número específico de solicitações.

O valor padrão é 0, que desabilita o atributo.
time Atributo timeSpan opcional.

Especifica que o processo de trabalho deve ser reciclado depois que um período especificado tiver decorrido.

O valor padrão é 29:00:00 (29 horas).

Elementos filho

Elemento Descrição
schedule Elemento opcional.

Especifica o agendamento de reinicializações periódicas de pools de aplicativos.

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