웹 호스팅 비즈니스에 가장 중요한 요소는 한대의 서버에 몇 대의 사이트를 구동할 수 있는가 아닐까요?

IIS 6.0을 통한 웹 서비스에는 어플리케이션 풀이 가장 중요한 개념이 됩니다.
여러 개의 웹사이트를 별도의 어플리케이션에 할당하면 웹사이트 1개 당 하나의 프로세스가 서비스를 하게 되므로, 프로세스에 문제가 생겨도 다른 사이트에는 영향을 주지 않습니다. 별개의 서버를 사용하는 것과 같은 효과가 있는 거지요. 

그렇지만, 어플리케이션 풀을 사용하면 메모리를 사용하기에 최대로 사용할 수 있는 수에는 제한이 있습니다.
그렇다면 한 대의 서버에서 IIS6.0으로 몇 개의 사이트까지 구동할 수 있을까요? 서버의 성능에 따라 달라지고, 설정에 따른 영향이 워낙 크기에 딱 몇개라고 언급하지는 않겠습니다. 

하지만, 어플리케이션의 성능을 향상할 수 있는 설정이 있어 알려드리려고 합니다. 일반적으로 알고 계시는 수보다 2배 이상의 웹사이트를 구동할 수 있습니다. 그렇다면 무엇을 어떻게 설정해야 할까요?

1. 어플리케이션 풀의 성능 설정

IIS 6.0의 작업자 프로세스 격리 모드에서는 웹 어플리케이션들의 성능을 최적화하도록 설정할 수 있습니다.
1) Request queue의 크기를 제한 하는 방법
2) 한 개 어플리케이션의 CPU 사용량이 정해진 값을 초과할 때 조치를 취할 수 있도록 모니터링 기능 제공
3) 특정 시간동안 사용되지 않는 어플리케이션을 유휴 상태로 변경하여 메모리를 반환하는 방법
4) 웹 가든을 설정하는 방법 (웹가든은 1개의 웹사이트가 여러개의 작업자 프로세스를 사용하는 것을 의미)

2. 요구사항

1) 작업자 프로세스 격리 모드 일 것
2) 해당 서버에 관리자 권한이 있을 것
3) IIS 서버 관리자 툴


3. 절차

너무 많은 요청이 들어오거나, 문제가 있는 어플리케이션으로 인해 성능이 저하될 때는 다음 사항을 고려하여 설정을 변경하는 것이 좋습니다.

1) 어플리케이션 풀이 처리할 수 있는 수보다 더 빠르게 요청이 들어오는 경우, 이런 요청은 어플리케이션 풀의 모든 메모리를 소비하게 됩니다. 요청 큐 Size가 너무 크고, 요청이 너무 빠르게 들어오는 경우 또는 서비스 거부 공격(Dos) 등이 있을 경우가 해당되겠지요. 요청이 메모리를 모두 점유하지 못하도록, 해당 어플리케이션 풀의 요청 큐 Size를 제한해야 합니다. 이런일이 빈번히 발생하는 사이트는 별도로 서버 호스팅을 받도록 유도하셔야 합니다.

2) 문제가 있는 어플리케이션이 CPU 자원을 독점하면, 이걸 해결해줘야 겠지요. CPU 모니터링, CPU 제한 설정을 하고 작업자 프로세스가 CPU 자원을 초과할 때 취할 행동을 설정할 수 있습니다.

3) 만약 서버 호스팅으로 별도로 빼내지 않고, 웹호스팅 환경에서 더 좋은 성능을 제공해주려면 웹 가든을 설정하여 더 많은 작업자 프로세스를 할당해 주는 것도 하나의 방법이 됩니다. 

4. 놀고 있는 어플리케이션 풀의 자원을 반환

가장 중요한 부분입니다. 웹 사이트 OOO개를 한대의 서버에서 구동할 경우 OOO개의 사이트가 동시에 액티브할까요? 그렇지 않을 것입니다. 유휴 시간을 5분, 10분, 15분 등으로 설정하여 설정된 시간동안 사용되지 않는 작업자 프로세스를 종료하여 해당 어플리케이션 풀에 할당된 메모리를 반환하는 것이지요. 이렇게 하면 당연히 한대의 서버에서 더 많은 사이트를 구동할 수 있게 되고, Site Density를 높여줄 수 있게 되겠지요. 

실제로 구동되는 사이트의 수를, 예를들어 50개로 유지하고 싶다면 모니터링을 통해 유지하고, 실제로는 100개의 웹사이트를 구동할 수 있을 것입니다. 몇 개의 프로세스가 구동되고 있는지 모니터링 할 수 있는 스크립트가 제공되는데요, 바로 이곳에 위치합니다. IIS6.0이 설치된 서버의 C:\Windows\System32 폴더 밑에 보면 iisapp.vbs 스크립트가 있는데, 이 스크립트를 커맨드 창에서 입력하면 현재 구동중인 작업자 프로세스를 보실 수 있습니다. 이 숫자를 관리하시면 되겠지요. 이 스크립트 외에도 iis***.vbs라는 이름으로 여러개 존재하는데, IIS를 관리하는데 도움이 되실 겁니다.


5. 설정 방법

1) 유휴 프로세스 반환하는 방법
    - IIS 서버 관리자에서 해당 어플리케이션 풀을 선택하시고, 오른쪽 마우스 클릭, 속성을 클릭합니다. 
      성능 탭에 유휴 시간, 몇 분 동안 사용되지 않으면 작업자 프로세스 종료 체크박스를 선택합니다.
      해당 텍스트박스에 원하는 시간을 입력합니다. (5분, 10분, 원하는 시간으로)
      확인을 누르시면 설정 완료

































감사합니다.
Trackbacks (0) | Comments (0)
http://hsshin.isblog.net/trackback_post_55.aspx
name
password
homepage
comment
secret
< PREV 1 NEXT >