Creative Commons License

Microsoft .NET

닷넷!시작하기
닷넷! Ver 2.0~
닷넷!스킬업
웹개발
윈폼개발
실용모듈개발
Tip & Tech
하루 한 문법

Microsoft .NET 개발자들을 위한 공간입니다. 기초강의에서 부터 고급 기술 정보 및 팁등을 다루도록 하겠습니다.

.

웹개발

이제 웹 기반 응용개발 지식은 거의 필수적으로 요구되는 시대입니다. 구체적인 웹 사이트 개발은 아니더라도 거시적인 웹 기반 서비스에 대한 지식 배양을 위해 할 것이 참 많네요 ^^

[IIS] IIS 6.0 구성 최적화 하기

작성자 : 박종명
최초 작성일 : 2008-05-09 (금요일)
최종 수정일 : 2008-05-09 (금요일)
조회 수 : 4429

- 소 개 -
본 문서에서는 웹 서비스 환경에서의 비즈니스 Tier 중계역할을 하는
IIS 의 최적화 구성 및 안정적 운영을 위한 가이드 라인과 제안을 기술한다.

- 웹 서비스 환경 -
비지니스 티어는 생략 한다



위의 서비스 환경에서의 많은 서비스들은 단 하나의 Worker Process 에서 호스팅 되며 서비스 단위로 Process 내에
논리적으로 격리된 형태로 운영되고 있다.

- 문제 제기-

1. 연대 책임
  - 웹 서비스 처리를 담당하는 w3wp.exe 를 모든 서비스가 공유함으로써 특정 서비스의 오류는 WOPS 전체 서비스
    의 장애로 직결된다.또한 특정 기능오류로 인한 프로세스 재 시작은 wops 전체를 재 시작 하는 것이다.
    (오류를 유발하는 요청뿐만 아니라 처리 중인 모든 요청은 거부된다)

2. 개별 개성 무시
  - 각 서비스들은 평균 요청 수,응답시간,메모리 점유,cpu 사용 등 제 각각 서비스 운영 특성이 다르다.
    프로세서 재생, 요청 Queue 제한, CPU 모니터링,Memory 사용량 감지 등의 제어 기준이 서비스 특성을 고려 하지
    않은 채 일률적으로 설정되어 있다.이는 시스템 최적화에 위반되며 나아가 간헐적인(원인을 파악하기 아주 힘든)
    오류를 만드는 원인이 되기도 한다

3. 일인 독재 혹은 업무 과부하
  - 단 하나의 worker process 가 모든 요청에 대해 처리 함으로써 요청 폭주 시 과중한 부하가 유발되며
    First in First out 방식의 요청처리로 인한 응답지연이 유발되기도 한다. 또한 특정 응용프로그램이 프로세스를
    독점할 소지도 있다
   

- IIS 6.0 개선 사항 -   
IIS 5.x 버전에 비해 6.0은 많은 측면에서 향상이 되었다. 요청 처리의 핵심이 기존 Winsock 을 통한 통신 메커니즘을
버리고 OS 의 커널 수준으로 내려 가는 등 수 많은 개선이 이루어 졌다. 여기서는 최적화 구성을 위한 커스트마이징
가능 요소만 살펴본다. 6.0 에서는 Application Pool 이라는 새로운 개념이 도입되었으며 worker process 단위로 재생,모니터링,감지 등이 가능하다.

  
- 최적화 적용 범위 -
Application pool 관리를 통해 웹서비스 의 성능,복원, 모니터링 등의 최적화를 꾀하며 여러 응용프로그램간의 리소스 충돌을 줄이고, 하나의 응용 프로그램이 리소스를 독점하는 문제를 예방한다.

1. 서비스 특성에 맞는 worker process 격리를 통해 오류 연대 책임을 피하고 프로세스 과부하를 방지 한다
2. 서비스 특성에 맞는 worker process 의 재생,실패감지,복원,CPU 모니터링 등을  설정함으로써 개별 서비스 특성을
    반영한다
3. 서비스 단위로 재생,중지,시작 등 제어를 가능케 함으로써 응용프로그램들을 보호할 수 있다.
4. 하나의 Application pool 에 다수의 worker process 를 사용함으로써 관리의 통합/처리의 분산화를 통해 성능개선
    및 관리의 용이성을 확보한다

- 최적화 주의사항 -
1. worker process 수를 늘리는 것이 항상 최적화를 보장하지는 않는다
2. 빈번한 재생 및 모니터링 은 불필요한 리소스를 낭비하게 될 수 도 있다
3. 서로 격리된 프로세서 간의 응용프로그램 설정 값이 공유되지 않는다.
4. 하나의 응용프로그램 풀에 둘 이상 응용프로그램이 서비스 된다면 동일한 버전의 .NET 웹 리소스가 사용되어야
    한다


- 최적화 가이드 라인 - 


관리 대상

항목

(문제) 상황

가이드 라인

Worker process
Recycling

시간 (1740)

시간의 흐름

 

스케쥴

사용량이 많을 때
재생 방지

사용량이 적은 시간대로 설정

 

가상메모리 점유

메모리 누수 방지

1.응용프로그램의 가상/실제
메모리 사용량의 기준치 설정

2.실제 메모리

  - 실제 메모리 사용량의
최소 1.5

  가상 메모리

  - 실제 메모리 사용량의

    최소 2

3.예시

  모니터링 결과 기준 메모리가

  실제 메모리 사용량 : 128

  가상 메모리 사용량 : 96

  이였다면

  실제 메모리 : 최소 192

  가상 메모리 : 256

실제 메로리 점유

메모리 누수
방지

CPU 점유(%)

CPU 과다 사용
방지

사용 량 : 권장 : 90% 이상
,worker process 가 다른
process
를 방해 할 때만

재생되도록 하려면 100% 설정
새로 고침 간격 : 5분 이상

ping 실행간격
(30
)

Worker process
모니터링

Svchost.exe -> w3wp.exe

Worker process
종료

유휴 상태
(1440
)

요청 없는 프로세스
불필요한
리소스 사용 방지

메모리와 리소스가 충분한 경우
넉넉하게 설정.
, 초기화에 시간이 많이

걸리는 App의 경우
이 설정 제한 고려

Application
Pool
종료

오류급증 시
보호 기능

Worker process
무한정 재생 방지

1. 오류수 : 기본 5
2. 시간간격
기본 5 , 최소 1
최대: 0xFFFFFFFF / 1000 / 60 (DWORD 71582)

커널 요청
Queue

요청 수 제한
(1000)

동시 요청 폭주
수용(503오류)

평균 요청 대기열 크기 값 :
메모리 크기 * CPU 개수 *
10/
구성된 응용프로그램 수

Worker
process
개수

하나의 풀에
Worker process
개수 (웹가든)
(1
)

풀에있는 한process 가 응답하지 않거나
hang
상태가 되면
다른 프로세스가 요청을 받아들임.

상황에 따름.

Worker
process
시작/중지
시간 제한

시작 시간 제한
(90
)

주어진 시간 내
시작 보장

1.광범위한 계산이나 DB조회를 하는 응용프로그램의 경우
-
시작 제한 시간 줄임
-
종료 제한 시간 늘림

2. 모든 요청의 처리 여부보다
서비스의 응답여부가 더
중요한 경우, 특히 메모리
누설이나 잦은 멈춤이

발생하는 경우에는

시작/종료 제한 시간을 모두
줄인다

종료 시간 제한
(90
)

주어진 시간 내
종료 보장

 


 

 

이름
비밀번호
홈페이지
NT <- 왼쪽의 문자를 오른쪽 박스에 똑같이 입력해 주세요