login register Sysop! about ME  
qrcode
    최초 작성일 :    2012년 06월 15일
  최종 수정일 :    2012년 06월 15일
  작성자 :    songgun
  편집자 :    songgun (송 원석)
  읽음수 :    24,103

강좌 목록으로 돌아가기

필자의 잡담~

이번 문서를 정리하고 있는 동안, 드디어 윈도우 서버 8이 윈도우 서버 2012라는 정식 이름으로 RC 버전이 공개되었네요. 조만간 나올 정식 버전을 기대해봅니다.

본문에서 살펴볼 기능은 IIS 8.0의 CPU 쓰로틀링 기능입니다. 별도의 모듈로 분리되어 있는 기능이라기 보다는, 응용 프로그램 풀 관리의 일부분이라고 보시면 맞을 겁니다. 인터넷 정보 서비스 관리자에서도 따로 아이콘이 제공되지도 않습니다. 그럼 지금부터 한 번 차분히 살펴보시죠.
IIS 8.0 미리보기 - CPU 쓰로틀링: 사이트 및 응용 프로그램 샌드박싱

다음은 본 번역 문서의 권한에 관한 제반 사항입니다.
  • 본 번역 문서에 대한 모든 저작권은 마이크로소프트사에 있으며, 단순히 IIS 8.0을 널리 알리고자 하는 개인적인 취지에 의해 번역되어 제공되는 문서입니다.
  • 마이크로소프트사의 요청이 있는 경우, 언제라도 게시가 중단될 수 있습니다.
  • 본문에서 제공하는 번역에는 오역이 포함되어 있을 수 있으며, 주석의 내용도 개인적으로 파악한 것으로 마이크로소프트사는 이 내용에 대해 일체의 보장을 하지 않습니다.
  • 본문의 원문은 IIS 개발팀이 제공하는 IIS 8.0 CPU Throttling: Sand-boxing Sites and Applications 입니다.
  • 본 문서는 2012년 6월 현재, IIS 8.0을 미리 살펴보기 위한 사전정보일뿐, 제품이 실제로 출시되면 얼마든지 변경될 수 있습니다.
호환성 정보
버전 비고
IIS 8.0 IIS 8.0은 CPU 쓰로틀링과 관련된 추가적인 옵션들을 지원하도록 수정되었습니다.
IIS 7.5 IIS 7.5은 CPU 쓰로틀링과 관련하여 변경된 부분이 없습니다.
IIS 7.0 CPU 쓰로틀링은 IIS 7.0에서 새로 도입되었습니다.


목차

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

* 근래에 마이크로소프트의 여러 문서들에서 "다중 이용자(Multi-Tenanted)"라는 용어가 빈번하게 거론되는 것을 느끼고 있습니다. 윈도우 애저(Windows Azure)의 점진적이지만 강력한 부상과 관련지어 생각해보면, 무언가 의미심장한 일련의 흐름을 반영하고 있다고 느껴집니다. IIS.net의 문서들에서 이 "다중 이용자" 환경이 언급될 때마다 자주 거론되는 사례가 바로 "공유 호스팅(Shared Hosting)" 환경입니다.

공유 호스팅 환경은, 간단하게 말해서 웹 호스팅 업체들이 제공해주는 환경을 머리 속에 떠올려보시면 됩니다. 대부분의 웹 호스팅 업체들은 하나의 서버에 여러 이용자들의 홈페이지를 구성해서 서비스를 제공합니다. 그런데, 특정 이용자가 CPU를 독점하는 바람에, 여러분의 홈페이지가 느려진다던가 서비스에 장애가 발생한다던가 하면 당연히 안되겠죠? 본문에서 다루는 문제가 바로 이런 부분에 관한 것입니다.

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

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

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

* 개인적으로 저는 이 한 문단 안에 IIS의 응용 프로그램 풀 기반 보안 체계의 모든 핵심이 포함되어 있다고 생각합니다. 다시 한 번 강조드리지만, IIS를 보다 깊이 이해하시려면 "응용 프로그램 격리 수준"의 개념을 바탕으로 하는 "응용 프로그램 풀"의 개념을 반드시 이해하셔야만 합니다.
** 가령 웹 호스팅 업체에서 이런 과금 체계 개발이 가능할 것입니다. 한 달에 만원을 지불하는 이용자는 CPU의 10%까지만 사용할 수 있고, 2만원을 지불하는 이용자는 20%까지 이용할 수 있다던지 말이죠. 마치, 국내 이통사들의 데이터 요금제 같네요. :-)

단계별 지침
전제조건:
  • 윈도우 서버 8에 IIS가 설치되어 있어야 합니다.

    IIS CPU 쓰로틀링은 IIS 응용 프로그램 풀 구성의 일부입니다. 그러므로, IIS를 기본 설치만 해도 함께 설치됩니다. 특별히 서버 관리자에서 따로 설치해야 할 IIS의 기능은 없습니다.

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

CPU 쓰로틀링 구성하기
  1. "IIS 관리자"를 실행합니다.
  2. 좌측 "연결" 패인에서 "응용 프로그램 풀" 노드를 선택합니다:
  3. 목록에서 "DefaultAppPool"을 선택합니다:
  4. 그리고, "작업" 패인에서 "Advanced Settings" 링크 버튼을 클릭합니다:
  5. "CPU" 그룹에서, 다음과 같은 구성들을 찾습니다:
    • Limit: 응용 프로그램 풀의 최대 CPU 사용량(10%인 경우, 10000)을 지정합니다. 응용 프로그램과 연결된 프로세스가 여러 개 존재하는 경우, 응용 프로그램 풀 하위의 모든 프로세스들의 전체 합계를 대상으로 제한이 적용됩니다.
    • LimitAction: 위에서 지정한 한계값에 도달하면 실행될 동작을 지정합니다.
      • 윈도우 서버 8에는 새로운 동작인 "Throttle"과 "ThrottleUnderLoad"가 추가되었습니다:
      • 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 쓰로틀링 기능을 살펴보았습니다.


authored by


 
 
.NET과 Java 동영상 기반의 교육사이트

로딩 중입니다...

서버 프레임워크 지원 : NeoDEEX
based on ASP.NET 3.5
Creative Commons License
{5}
{2} 읽음   :{3} ({4})