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