Share via


Internet Information Service Overview

IIS는 기본적으로 IE로부터 전달되어 온 요청에 대해 처리하는 기능 뿐만 아니라 응용 프로그램을 사용하여 다양한 처리를 효과적으로 수행할 수 있습니다. IIS 5.0에서는 Inetinfo.exe 프로세스에서 80포트를 바인딩하고 웹 서비스를 관리하게 되며 응용 프로그램들은 dllhost.exe라고 하는 단일의 프로세스에서 실행되게 됩니다.

우선, IIS 서버로 들어온 요청은 Inetinfo.exe 에서 처리되는데, 이 때 filter가 등록되어 있을 경우에는 이를 반드시 거치게 됩니다. 물론, filter에서 처리된 다음 바로 응답을 받는 경우도 존재합니다. 만약 요청된 컨텐츠가 정적인 콘텐츠이고, 캐쉬 메모리에 요청된 컨텐츠가 존재한다면 빠르게 응답을 줄 수 있습니다. 그리고, 동적인 컨텐츠들은 dllhost.exe 안의 thread에 의해 요청이 처리 됩니다. Dllhost.exe는 thread 의 pool을 갖고 있어 여러 응용프로그램을 단일의 프로세스에서 처리하도록 할 수 있습니다. 만약 pool에서 실행되는 하나의 응용 프로그램이 오류를 발생시키면 같은 pool에서 수행중인 응용 프로그램에도 영향을 미칠 수 있습니다. 따라서 응용 프로그램을 보호하기 위해 dllhost.exe의 다른 인스턴스를 사용하여 격리 프로세스로 실행하도록 할 수 있습니다. 그리고 각 dllhost.exe 프로세스들끼리는 RPC 통신(svchost.exe)을 하게 됩니다.

전반적으로, IIS5.0 의 구조상 Inetinfo.exe 에 문제가 생길 경우 웹 서비스 자체를 하지 못한다는 문제점이 있습니다.

IIS 6.0에서 HTTP.SYS는 IE로부터 전달되어 온 요청을 수신하고 각 요청들을 대기열에 대기시킵니다. 각 요청 대기열은 각 어플리케이션 풀에 해당하며 이는 하나 이상의 작업자 프로세스로 이루어져 있습니다. 어플리케이션 풀에서 실행되는 작업자 프로세스는 HTTP.SYS에서 요청을 직접 가져와서 처리 후 응답을 돌려주게 됩니다. 여기서 어플리케이션 풀이란, 응용 프로그램의 쓰레드 풀로, w3wp.exe 프로세스안에 여러 쓰레드들이 ASP 및 ASP.NET 와 같은 요청들을 처리해줍니다.

여기서, 각각의 응용프로그램 확장자 별로 CPU 당 작업자 쓰레드 수가 정해져 있는데, ASP는 25개, ASP.NET 1.1 은 20개 입니다.