Параметры повторного использования пула <приложений>

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

Элемент <recycling> содержит параметры конфигурации, управляющие условиями, запускающими IIS 7 для перезапуска пула приложений. Вы также можете управлять типами событий, записываемых службами IIS в журнал событий при перезапуске пула приложений.

Можно указать, что службы IIS перезапускает пул приложений с заданными интервалами (например, каждые 180 минут), в определенное время каждый день или после того, как пул приложений получит определенное количество запросов. Вы также можете настроить <recycling> элемент для перезапуска пула приложений, когда рабочий процесс виртуальной памяти и использования физической памяти достигает определенного порогового значения.

Элемент можно использовать для <recycling> указания двух классов событий, регистрируемых в журнале событий при перезапуске пула приложений iis. Первый класс содержит события перезапуска, которые можно настроить, например те, которые упоминались в предыдущем абзаце. Второй класс включает в себя события перезапуска во время выполнения, такие как события перезапуска по запросу, события перезапуска, вызванные изменениями конфигурации в приложении или приложениях, работающих в пуле приложений, или перезапуск, вызванный неработоспособным фильтром ISAPI или расширением ISAPI.

Для <recycling> реализации этих функций элемент использует следующий атрибут и дочерний элемент:

  • Атрибут logEventOnRecycle
  • Элемент periodicRestart

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

Версия Примечания
IIS 10.0 Значение атрибута logEventOnRecycle по умолчанию было изменено в IIS 10.0.
IIS 8,5 Элемент <recycling> не был изменен в IIS 8.5.
IIS 8,0 Элемент <recycling> не был изменен в IIS 8.0.
IIS 7,5 Элемент <recycling> не был изменен в IIS 7.5.
IIS 7.0 Элемент <recycling> появился в IIS 7.0.
IIS 6,0 Элемент <recycling> заменяет части свойства метабазы 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. В области Действия щелкните Перезапуск...
    Снимок экрана: диспетчер IS. Повторное использование отображается в области Действия.

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

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

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

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

Атрибуты

Атрибут Описание
disallowOverlappingRotation Дополнительный логический атрибут.

Указывает, должна ли служба WWW запускать другой рабочий процесс для замены существующего рабочего процесса во время завершения этого процесса. Это свойство должно иметь значение true , если рабочий процесс загружает код приложения, который не поддерживает несколько рабочих процессов.

Значение по умолчанию — false.
disallowRotationOnConfigChange Дополнительный логический атрибут.

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

Значение по умолчанию — false.
logEventOnRecycle Необязательный атрибут flags.

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

Атрибут logEventOnRecycle может иметь одно или несколько из следующих возможных значений. Если указано несколько значений, разделите их запятыми (,). Флагами по умолчанию для версий IIS, предшествующих IIS 10, являются Time, Memoryи PrivateMemory; для IIS 10 и более поздних версий — Time, Requests, Schedule, IsapiUnhealthyMemory, ConfigChangeOnDemand, и PrivateMemory;
Значение Описание
ConfigChange Регистрация события, когда пул приложений перезапускает из-за изменения конфигурации.

Числовое значение равно 64.
IsapiUnhealthy Регистрировать событие, когда пул приложений перезапускается после того, как расширение ISAPI сообщает рабочему процессу о том, что он находится в неработоспособном состоянии.
Числовое значение равно 16.
Memory Регистрируются события, когда пул приложений перезапускает после использования указанного объема виртуальной памяти.

Числовое значение равно 8.
OnDemand Регистрировать событие при немедленной перезапуске пула приложений для устранения проблемы.

Числовое значение равно 32.
PrivateMemory Регистрируются события, когда пул приложений перезапускает после использования указанного объема виртуальной памяти.

Числовое значение равно 128.
Requests Регистрировать событие при перезапуске пула приложений после достижения заданного количества запросов.

Числовое значение равно 2.
Schedule Регистрировать событие, когда пул приложений перезапускает после достижения заданного времени суток.

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

Числовое значение равно 1.

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

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

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

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

В следующем примере конфигурации используется элемент пула <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()