IIS 8.5의 유휴 작업자 프로세스 페이지-아웃

등록일시: 2014-05-29 08:00,  수정일시: 2014-05-27 22:42
조회수: 11,414
이 문서는 IIS 기술을 널리 알리고자 하는 개인적인 취지로 제공되는 번역문서입니다. 이 문서에 대한 모든 저작권은 마이크로소프트에 있으며 요청이 있을 경우 언제라도 게시가 중단될 수 있습니다. 번역 내용에 오역이 존재할 수 있고 주석은 번역자 개인의 의견일 뿐이며 마이크로소프트는 이에 관한 어떠한 보장도 하지 않습니다. 번역이 완료된 이후에도 대상 제품 및 기술이 개선되거나 변경됨에 따라 원문의 내용도 변경되거나 보완되었을 수 있으므로 주의하시기 바랍니다.

IIS 8.5에서는 관리자가 유휴 작업자 프로세스를 종료하는 대신 일시 중지시킬 수 있는 옵션이 제공됩니다. (IIS 8.5는 Windows Server 2012 R2와 Windows 8.1에서 지원됩니다.)

호환성

버전 비고
IIS 8.5 유휴 작업자 프로세스 페이지-아웃 기능은 IIS 8.5에서만 사용할 수 있습니다.
IIS 8.0
IIS 7.5
IIS 7.0

내용

문제점

기존 버전의 인터넷 정보 서비스(IIS, Internet Information Services)들에서는 지정된 시간 동안 유휴 상태가 지속된 작업자 프로세스를 중지시킬 수 있는 기능이 제공됩니다. 이 기능을 사용하면 상대적으로 접근 빈도가 낮은 사이트들이 유휴 상태일 때 시스템 리소스의 낭비를 줄일 수 있습니다. 반면, 일단 중지된 사이트에 다시 접근하는 첫 번째 사용자는 작업자 프로세스가 다시 시작될 때까지 잠시 대기해야 한다는 단점이 있습니다.

해결방법

IIS 8.5에서는 관리자가 유휴 작업자 프로세스를 종료하는 대신 일시 중지시킬 수 있는 옵션이 제공됩니다. 일단 작업자 프로세스가 일시 중지되면, 프로세스 자체는 남아 있지만 디스크로 페이지-아웃 되어 해당 프로세스가 소비하는 시스템 리소스가 감소하게 됩니다. 그리고, 사용자가 다시 사이트에 접근하면, 해당 작업자 프로세스가 일시 중지 상태에서 깨어나 신속하게 사용 가능한 상태로 전환됩니다. 반면, 유휴 작업자 프로세스를 완전히 종료하는 경우에는 작업자 프로세스 자체가 없어지므로, 다음 접근 시 사이트가 다시 시작되는데 필요한 시간이 더 길어집니다. IIS 8.5의 기본 동작은 프로세스를 종료하는 것으로, 기존 버전의 IIS들과 동일합니다.

직접 applicationHost.config 파일에 idleTimeoutAction 어트리뷰트를 구성해서 특정 응용 프로그램 풀이나 모든 응용 프로그램 풀들에 대한 기본값을 지정할 수도 있습니다.

단계별 지침

특정 응용 프로그램 풀에 대한 유휴 작업자 프로세스 페이지-아웃 구성

  1. IIS 관리자를 실행합니다.
  2. 연결(Connections) 패인에서 응용 프로그램 풀(Applications Pools) 노드를 선택한 다음, 응용 프로그램 풀(Applications Pools) 패인에서 구성하려는 응용 프로그램 풀을 선택하고, 작업(Actions) 패인에서 고급 설정...(Advanced Settings...) 링크 버튼을 클릭합니다.
  3. 고급 설정(Advanced Settings) 대화 상자에서 프로세스 모델(Process Model) 영역의 유휴 시간 제한 조치(Idle Time-out Action) 항목의 값을 Suspend로 설정해서 작업자 프로세스가 유휴 시간 제한값에 도달하면 일시 중지하고 디스크에 페이지 아웃되도록 설정합니다. 작업자 프로세스를 종료시키려면 Terminate를 선택합니다.
    Set idle time-out for pool
  4. 필요한 경우, 유휴 시간 제한(분)(Idle Time-out) 항목의 기본값인 20분을 조정해서 원하는 값으로 변경합니다.
  5. 확인(OK) 버튼을 클릭합니다.

모든 응용 프로그램 풀들에 대한 유휴 작업자 프로세스 페이지-아웃 기본값 구성

  1. IIS 관리자를 실행합니다.
  2. 연결(Connections) 패인에서 응용 프로그램 풀(Applications Pools) 노드를 선택한 다음, 작업(Actions) 패인에서 응용 프로그램 풀 기본값 설정...(Set Application Pool Defaults...) 링크 버튼을 클릭합니다.
  3. 응용 프로그램 풀 기본값(Application Pool Defaults) 대화 상자에서 프로세스 모델(Process Model) 영역의 유휴 시간 제한 조치(Idle Time-out Action) 항목의 값을 Suspend로 설정해서 작업자 프로세스가 유휴 시간 제한값에 도달하면 일시 중지하고 디스크에 페이지 아웃되도록 설정합니다. 작업자 프로세스를 종료시키려면 Terminate를 선택합니다.
    Set idle time-out as default
  4. 필요한 경우, 유휴 시간 제한(분)(Idle Time-out) 항목의 기본값인 20분을 조정해서 원하는 값으로 변경합니다.
  5. 확인(OK) 버튼을 클릭합니다.

일시 중지된 작업자 프로세스의 리소스 사용량 확인하기

작업 관리자를 이용해서 일시 중지된 작업자 프로세스들을 살펴볼 수 있습니다. 매우 적은 양의 메모리와 CPU만 사용하고 있는 것을 확인할 수 있습니다.

Suspended idle sites

applicationHost.config 파일의 유휴 시간 제한 조치 구성 확인

idleTimeoutAction 어트리뷰트는 applicationHost.config 파일 상의 두 위치에 설정이 가능합니다:

  • 특정 응용 프로그램 풀에 대해 유휴 시간 제한 조치 항목을 구성하면 <add> 요소의 <processModel> 자식 요소에 해당 풀에만 적용되는 idleTimeoutAction 어트리뷰트가 설정됩니다. 그 결과는 아래 applicationHost.config 파일의 스크린 샷의 DefaultAppPool 응용 프로그램 풀에 대한 요소에서 확인할 수 있습니다. 이 경우에는 idleTimeoutAction 어트리뷰트가 "Suspend"로 설정되어 있는 것을 확인할 수 있습니다.
  • 모든 응용 프로그램 풀들에 대한 유휴 시간 제한 조치 항목을 구성하면 <applicationPoolDefaults> 요소의 <processModel> 자식 요소에 모든 풀들에 대한 기본값이 설정됩니다. 아래 스크린 샷의 .NET v4.5 응용 프로그램 풀처럼 자체적인 idleTimeoutAction 어트리뷰트가 지정되어 있지 않으면 <processModel> 요소에 설정된 기본 idleTimeoutAction 어트리뷰트 값이 해당 응용 프로그램 풀에 적용됩니다. 이 경우에는 idleTimeoutAction 어트리뷰트가 "Terminate"로 설정되어 있는 것을 확인할 수 있습니다. 반면, 특정 응용 프로그램 풀에 idleTimeoutAction 어트리뷰트가 지정되어 있다면, 그 값이 기본값을 덮어쓰게 됩니다.

Idle time-out in config file

요약

본문에서는 지정된 시간 동안 유휴 상태에 놓인 작업자 프로세스를 일시 중지하거나 종료하도록 IIS를 구성해봤습니다.