다음을 통해 공유


애플리케이션 풀 재활용 <주기에 대한 주기적 다시 시작 설정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의 기본 설치에 포함되어 있습니다.

방법

애플리케이션 풀에 대해 주기적인 재활용을 설정하는 방법

  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 파일의 서버 수준에서 구성할 수 있습니다.

특성

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초 동안 애플리케이션 풀에서 작업자 프로세스를 종료하고 시작하기 위해 shutdownTimeLimitstartupTimeLimit 특성을 구성합니다. 이러한 시간 제한을 초과하면 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()