Параметры периодического перезапуска для периодического перезапуска <пула приложенийRestart>

Общие сведения

Элемент <periodicRestart> содержит параметры конфигурации, которые позволяют управлять перезапуском пула приложений. Можно указать, что службы IIS 7 перезапускает пул приложений через интервал времени (в минутах) или в определенное время каждый день. Можно также настроить СЛУЖБЫ IIS для перезапуска на основе объема виртуальной или физической памяти, используемого рабочим процессом в пуле приложений, или настроить IIS для перезапуска пула приложений после обработки рабочим процессом определенного количества запросов.

Совместимость

Версия Примечания
IIS 10.0 Элемент <periodicRestart> не был изменен в IIS 10.0.
IIS 8,5 Элемент <periodicRestart> не был изменен в IIS 8.5.
IIS 8,0 Элемент <periodicRestart> не был изменен в IIS 8.0.
IIS 7,5 Элемент <periodicRestart> не был изменен в IIS 7.5.
IIS 7.0 Элемент <periodicRestart> появился в IIS 7.0.
IIS 6,0 Элемент <periodicRestart> заменяет части свойства метабазы IIsApplicationPools IIS 6.0.

Настройка

Коллекция <applicationPools> включена в установку IIS 7 по умолчанию.

Инструкции

Настройка периодического перезапуска для пула приложений

  1. Откройте диспетчер служб IIS.

    • Если вы используете Windows Server 2012 или Windows Server 2012 R2:

      • На панели задач щелкните диспетчер сервера, инструменты, а затем диспетчер служб IIS.
    • Если вы используете Windows 8 или Windows 8.1:

      • Удерживая нажатой клавишу Windows, нажмите букву X и щелкните панель управления.
      • Щелкните Администрирование, а затем дважды щелкните диспетчер служб IIS.
    • Если вы используете Windows Server 2008 или Windows Server 2008 R2:

      • На панели задач нажмите кнопку Пуск, наведите указатель на пункт Администрирование, а затем щелкните Диспетчер служб IIS.
    • Если вы используете Windows Vista или Windows 7:

      • На панели задач нажмите кнопку Пуск, а затем выберите пункт панель управления.
      • Дважды щелкните элемент Администрирование, а затем дважды щелкните диспетчер служб IIS.
  2. В области Подключения разверните имя сервера и щелкните Пулы приложений.

  3. В области Пулы приложений выберите пул приложений, который требуется изменить.

  4. В области Действия нажмите кнопку Перезапуск...
    Снимок экрана: панель

  5. На странице Условия перезапуска мастера изменения параметров перезапуска пула приложений выберите хотя бы один из параметров в разделе Фиксированные интервалы , введите значения в соответствующие текстовые поля и нажмите кнопку Далее.
    Снимок экрана: страница

  6. (Необязательно) На странице Перезапуск событий для записи в журнал мастера изменения параметров перезапуска пула приложений выберите настраиваемые события перезапуска и события перезапуска во время выполнения, которые службы IIS должны отправлять в журнал событий при их возникновении, а затем нажмите кнопку Готово.
    Снимок экрана: страница

Конфигурация

Элемент <periodicRestart> можно настроить на уровне сервера в файле ApplicationHost.config.

Атрибуты

Атрибут Описание
memory Необязательный атрибут uint.

Указывает объем виртуальной памяти (в килобайтах), который рабочий процесс может использовать до перезапуска рабочего процесса.

Значение по умолчанию — 0, которое отключает атрибут .
privateMemory Необязательный атрибут uint.

Указывает объем частной памяти (в килобайтах), которую рабочий процесс может использовать до перезапуска рабочего процесса.

Значение по умолчанию — 0, которое отключает атрибут .
requests Необязательный атрибут uint.

Указывает, что рабочий процесс должен быть переработан после обработки определенного числа запросов.

Значение по умолчанию — 0, которое отключает атрибут .
time Необязательный атрибут timeSpan.

Указывает, что рабочий процесс должен быть переработан по истечении указанного времени.

Значение по умолчанию — 29:00:00 (29 часов).

Дочерние элементы

Элемент Описание
schedule Необязательный элемент.

Указывает планирование периодических перезапусков пулов приложений.

Образец конфигурации

В следующем примере конфигурации используется элемент пула <add> приложений для создания пула приложений с именем Contoso. Элемент <recycling> настраивает ведение журнала для перезапуска пула приложений, <periodicRestart> элемент настраивает время перезапуска пула приложений, а <processModel> элемент настраивает атрибуты shutdownTimeLimit и startupTimeLimit для завершения работы и запуска рабочих процессов в пуле приложений в течение 30 секунд каждый. При превышении этих ограничений службы IIS завершают рабочий процесс.

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

Пример кода

В следующих примерах кода добавляется пул приложений с именем Contoso на сервер IIS 7, а затем в пуле приложений устанавливается ежедневная очистка в 3:00 утра.

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

Можно также использовать следующий синтаксис:

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

Примечание

При использовании AppCmd.exe для настройки этих параметров для параметра apphostфиксации необходимо задать значение . Это зафиксирует параметры конфигурации в соответствующем разделе расположения в файле 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()