Параметры повторного использования пула <приложений>
Общие сведения
Элемент <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 по умолчанию.
Инструкции
Настройка периодической повторной переработки для пула приложений
Откройте диспетчер служб 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.
В области Подключения разверните имя сервера и щелкните Пулы приложений.
В области Пулы приложений выберите пул приложений, который требуется изменить.
На странице Условия утилизации мастера изменения параметров перезапуска пула приложений выберите хотя бы один из параметров в разделе Фиксированные интервалы , введите значения в соответствующие текстовые поля и нажмите кнопку Далее.
(Необязательно) На странице События перезапуска в журнал мастера изменения параметров перезапуска пула приложений выберите настраиваемые события перезапуска и события перезапуска во время выполнения, которые 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 , IsapiUnhealthy Memory , ConfigChange OnDemand , и PrivateMemory ;
|
Дочерние элементы
Элемент | Описание |
---|---|
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()