IIS 8.0 CPU 쓰로틀링: 사이트 및 응용 프로그램 샌드박싱

등록일시: 2012-06-15 22:45,  수정일시: 2013-10-05 14:58
조회수: 7,205
이 문서는 IIS 기술을 널리 알리고자 하는 개인적인 취지로 제공되는 번역문서입니다. 이 문서에 대한 모든 저작권은 마이크로소프트에 있으며 요청이 있을 경우 언제라도 게시가 중단될 수 있습니다. 번역 내용에 오역이 존재할 수 있고 주석은 번역자 개인의 의견일 뿐이며 마이크로소프트는 이에 관한 어떠한 보장도 하지 않습니다. 번역이 완료된 이후에도 대상 제품 및 기술이 개선되거나 변경됨에 따라 원문의 내용도 변경되거나 보완되었을 수 있으므로 주의하시기 바랍니다.
본 문서에서는 IIS 8.0의 응용 프로그램 풀 관리 기능의 일부분인 CPU 쓰로틀링에 관해서 살펴봅니다. 다만, 본문의 원문은 IIS 8이 정식으로 배포되기 이전인 2012년 2월 29일에 공개된 문서로, 일부 내용에 변경사항이 존재할 수 있습니다. 본 문서는 2012년 6월 현재, IIS 8을 미리 살펴보기 위한 사전정보일 뿐입니다.

호환성

버전 비고
IIS 8.0 CPU 쓰로틀링은 IIS 8.0에서 추가적인 쓰로틀링 옵션들을 지원하도록 수정되었습니다.
IIS 7.5 CPU 쓰로틀링은 IIS 7.5에서 변경된 부분이 없습니다.
IIS 7.0 CPU 쓰로틀링은 IIS 7.0에서 새로 도입되었습니다.

내용

문제점

공유 호스팅 환경을 비롯한 다중 이용자 배포 환경에서는 각각의 이용자별로 샌드박스를 구성하는 것이 대단히 중요합니다. 샌드박스가 보장되지 않으면 특정 이용자가 다른 이용자의 콘텐츠에 접근하거나 메모리, CPU, 대역폭 등을 독점해서 의도적이든 비의도적이든 다른 이용자들에게 악영향을 미칠 수 있습니다.

해결방법

윈도우 서버 8의 인터넷 정보 서비스는 응용 프로그램 풀 단위로 샌드박스가 적용됩니다. 결과적으로 각각의 이용자들은 별도의 사용자 신원 계정을 통해서 실행되고 자원 역시도 프로세스 별로 제한되므로, 이 방식은 윈도우 프로세스 수준에서 두 종류의 보안 경계를 제공해주는 결과를 가져옵니다. *

윈도우 서버 8의 IIS CPU 쓰로틀링 기능을 이용하면 각각의 이용자들이 실제로 얼마나 CPU를 많이 사용할 수 있는지에 대한 제한을 CPU 이용 비율을 기준으로 지정할 수 있습니다. 게다가, IIS 응용 프로그램 풀마다 별도의 구성을 지정할 수 있으므로 이용자마다 각기 다른 제한 조건을 적용할 수 있으며 결과적으로 더 높은 한계를 갖는 이용자가 더 많은 비용을 지불하는 새로운 비즈니스 모델을 구상해 볼 수도 있을 것입니다. **

중요한 점은 IIS CPU 쓰로틀링이 CPU 자원의 예약이 아니라는 사실을 이해해야 합니다. 그보다는 최대 사용량의 제한에 가깝습니다.

* 개인적으로 저는 이 한 문단 안에 IIS의 응용 프로그램 풀 기반 보안 체계의 모든 핵심이 포함되어 있다고 생각합니다. 다시 한 번 강조드리지만 IIS를 보다 깊이 이해하시려면 "응용 프로그램 격리 수준"의 개념을 바탕으로 하는 "응용 프로그램 풀"의 개념을 반드시 이해하셔야만 합니다.

** 가령, 웹 호스팅 업체에서 이런 과금 체계 개발이 가능할 것입니다. 한 달에 만원을 지불하는 이용자는 CPU의 10%까지만 사용할 수 있고, 2만원을 지불하는 이용자는 20%까지 이용할 수 있다던지 말이죠. 마치, 국내 이통사들의 데이터 요금제 같네요. :-)

단계별 지침

전제조건:

  • 윈도우 서버 8에 IIS가 설치되어 있어야 합니다.
    • IIS CPU 쓰로틀링은 IIS 응용 프로그램 풀 구성의 일부입니다. 그러므로, IIS를 기본 설치만 해도 함께 설치됩니다. 특별히 서버 관리자에서 따로 설치해야 할 IIS의 기능은 없습니다.
  • 작업을 수행할 IIS 응용 프로그램 풀과 이 풀에 할당된 하나 이상의 사이트.
    • 본문에서는 Default Web Site 및 DefaultAppPool을 이용합니다.

알려진 버그에 대한 해결방법:

  • 현재 이 기능에 대한 알려진 버그는 존재하지 않습니다.

CPU 쓰로틀링 구성하기

  1. IIS 관리자를 실행합니다.
  2. 좌측 연결 패인에서 응용 프로그램 풀 노드를 선택합니다:
  3. 목록에서 DefaultAppPool을 선택합니다:
  4. 그리고, 작업 패인에서 Advanced Settings 링크 버튼을 클릭합니다:
  5. CPU 그룹에서 다음과 같은 구성들을 찾습니다:
    • Limit: 응용 프로그램 풀의 최대 CPU 사용량(10%인 경우, 10000)을 지정합니다. 응용 프로그램과 연결된 프로세스가 여러 개 존재하는 경우, 응용 프로그램 풀 하위의 모든 프로세스들의 전체 합계를 대상으로 제한이 적용됩니다.
    • LimitAction: 위에서 지정한 한계값에 도달하면 실행될 동작을 지정합니다.
      • 윈도우 서버 8에는 새로운 동작인 ThrottleThrottleUnderLoad가 추가되었습니다:
      • Throttle: 이 동작을 선택하면 CPU의 소모를 Limit 항목에 지정한 값으로 조정합니다.
      • ThrottleUnderLoad: 이 동작을 선택하면 CPU에 대한 경합이 이루어지고 있는 경우에만 CPU 소모량을 Limit 항목에 지정한 값으로 조정합니다. 즉, CPU가 한가한 경우에는 응용 프로그램 풀이 더 많은 CPU 활동을 소비할 수 있다는 뜻입니다.
    • LimitInterval: Throttle 동작과 ThrottleUnderLoad 동작을 선택한 경우에는 사용되지 않습니다. 이 구성은 이전 버전의 윈도우에 대한 호환성 때문에 제공되는 것입니다.
  6. 가령, 제한 값을 30%로 설정하려면 다음과 같이 설정합니다:
    1. Limit: 30000 (30%)
    2. LimitAction: Throttle
  7. 이것이 필요한 작업의 전부입니다. 부하 생성 도구를 이용해서 Default Web Site에 요청을 전송하여 테스트를 수행해 볼 수 있습니다. 가상의 트래픽을 생성하려면 WCAT(http://www.iis.net/community/default.aspx?tabid=34&g=6&i=1467) 등의 도구를 이용하면 됩니다.
  8. 필요한 구성 설정을 기본값으로 설정해서, 응용 프로그램 풀마다 매번 개별적으로 구성하는 번거로움을 피할 수도 있습니다. 응용 프로그램 풀의 기본값을 설정하려면, 작업 패인에서 응용 프로그램 풀 기본값 설정 링크 버튼을 클릭합니다:
  9. 그러면, 동일한 설정값을 응용 프로그램 풀의 기본값으로 구성할 수 있습니다:

시나리오

다음과 같은 시나리오에서 배포를 수행하여 테스트 해 보십시요:

  • IIS CPU 쓰로트링 기능은 다중 이용자 환경을 목표로 설계된 기능입니다. 공유 호스팅 배포 환경 같이 수 천 개의 사이트와 응용 프로그램이 존재하는 환경에서 이 설정을 적용해 보십시요.
  • 서로 다른 이용자들의 그룹을 구성하여 각기 다른 제한을 설정하고, 다른 이용자들보다 더 많은 CPU 자원을 소모하는 고객들을 가정해보십시요.
  • LimitAction 항목을 ThrottleUnderLoad로 설정하고 그 결과를 살펴봅니다. 이 설정은 CPU 경합이 존재하면 "Throttle"과 동일하게 동작합니다. 그러나, CPU 경합이 존재하지 않으면 응용 프로그램 풀이 "Limit" 항목에 설정된 값보다 더 많은 CPU 자원을 사용할 수 있습니다.
  • 메모리나 대역폭 제한을 윈도우 서버 8의 IIS CPU 쓰로트링 기능과 동시에 적용하여 샌드박스를 구성해 보십시요. 본문에서는 메모리나 대역폭 제한에 관해서는 별도로 언급하지 않았습니다. 그 이유는 이 기능들은 이미 윈도우 서버 2008이나 윈도우 서버 2008 R2에 존재하던 기능들이기 때문입니다.

요약

본문에서는 윈도우 서버 8의 CPU 쓰로틀링 기능을 살펴보았습니다.