애플리케이션 풀 재활용 <주기에 대한 주기적 다시 시작 설정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> IIS 6.0 IIsApplicationPools 메타베이스 속성의 일부를 대체합니다. |
설치 프로그램
컬렉션은 <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가 이벤트 로그에 보낼 구성 가능한 재활용 이벤트 및 런타임 재활용 이벤트를 선택한 다음 마침을 클릭합니다.
구성
요소는 <periodicRestart>
ApplicationHost.config 파일의 서버 수준에서 구성할 수 있습니다.
특성
attribute | Description |
---|---|
memory |
선택적 uint 특성입니다. 작업자 프로세스가 재활용되기 전에 작업자 프로세스에서 사용할 수 있는 가상 메모리 양(킬로바이트)을 지정합니다. 기본값은 특성을 사용하지 않도록 설정하는 입니다 0 . |
privateMemory |
선택적 uint 특성입니다. 작업자 프로세스가 재활용되기 전에 작업자 프로세스에서 사용할 수 있는 개인 메모리 양(킬로바이트)을 지정합니다. 기본값은 특성을 사용하지 않도록 설정하는 입니다 0 . |
requests |
선택적 uint 특성입니다. 작업자 프로세스가 특정 수의 요청을 처리한 후 재활용되도록 지정합니다. 기본값은 특성을 사용하지 않도록 설정하는 입니다 0 . |
time |
선택적 timeSpan 특성입니다. 지정된 시간이 경과한 후 작업자 프로세스를 재활용해야 되도록 지정합니다. 기본값은 (29시간)입니다 29:00:00 . |
자식 요소
요소 | Description |
---|---|
schedule |
선택적 요소입니다. 애플리케이션 풀의 주기적인 다시 시작 예약을 지정합니다. |
구성 샘플
다음 구성 샘플에서는 애플리케이션 풀 <add>
요소를 사용하여 Contoso라는 새 애플리케이션 풀을 만듭니다. 요소는 <recycling>
애플리케이션 풀 다시 시작에 대한 로깅을 구성하고, <periodicRestart>
요소는 애플리케이션 풀이 다시 시작될 때 구성하고 <processModel>
, 요소는 각각 30초 동안 애플리케이션 풀에서 작업자 프로세스를 종료하고 시작하기 위해 shutdownTimeLimit 및 startupTimeLimit 특성을 구성합니다. 이러한 시간 제한을 초과하면 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()