[IIS] IIS 내에서 ASP.NET은 어떻게 동작 하는가.

728x90
반응형

IIS 프로세스가 실행 요청을 받기 전에 다음 단계에 설명 된 일부 예비 처리가 발생합니다.

 

  1. 요청이 HTTP.sys 에 도착합니다.

  2. HTTP.sys 는 요청이 유효한지 확인합니다. 요청이 유효하지 않으면 유효하지 않은 요청에 대한 코드를 클라이언트로 다시 보냅니다. 

  3. 요청이 유효한 경우, 정적 컨텐츠를 즉시 제공할 수 있으므로 HTTP.sys는 요청이 정적 컨텐츠 (HTML)에 대한 것인지 확인 합니다.

  4. 요청이 동적 내용에 대한 것이면, HTTP.sys 는 응답이 커널모드 캐시에 있는지 확인 합니다. 

  5. 응답이 캐시에 있으면 HTTP.sys 는 응답을 즉시 반환합니다. 

  6. 응답이 캐시되지 않으면, HTTP.sys는 올바른 요청 큐를 결정하고, 해당 큐에 요청을 배치 합니다. 이론적으로 HTTP.sys 가 처리할 수 있는 요청의 수는 무제한 입니다.

  7. 큐에 할당된 작업자 프로세스 (W3WP.exe)가 없는 경우 HTTP.sys는 WWW 서비스가 시작하도록 신호를 보냅니다. 

  8. 작업자 프로세스가 큐에서 요청을 가져옵니다.
    (여기에서 요청 수가 궁금합니다. IIS 7.0 통합 모드의 경우 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\2.0.50727.0 내의 MaxConcurrentRequestsPerCPU 라는 DWORD가 CPU당 동시 요청수를 결정합니다. 자세한 내용은 이 URL 을 참조하세요. http://blogs.msdn.com/tmarq/archive/2007/07/21/asp-net-thread-usage-on-iis-7-0-and-6-0.aspx)
    및 요청 유형을 결정하기 위해 URL을 평가하여 요청을 처리 합니다.  (ASP, ISAPI 또는 CGI)

  9. 작업자 프로세스는 응답을 HTTP.sys로 다시 보냅니다. 

  10. HTTP.sys 는 응답을 클라이언트로 다시 보내고 요청이 구성된 경우 요청을 기록합니다. 


Architecture:

 


 

IIS 6.0은 새로운 요청 처리 아키텍처로 완전히 재 설계되었으며, 프로세스 외부 비용을 발생시키지 않고 높은 격리 수준과 훨씬 높은 수준의 안정성 및 확장 성을 제공합니다. IIS 6.0의 주요 구성 요소를 다음 두 가지 범주로 나눌 수 있습니다.

 

  • HTTP.sys—HTTP.sys는 들어오는 요청을 수신하고 해당 요청을 적절한 큐에 대기시키는 커널 모드 HTTP 리스너입니다. 각 요청은 하나의 응용 프로그램 풀에서 서비스합니다. IIS 6.0의 응용 프로그램 풀에는 하나 이상의 응용 프로그램이 포함될 수 있습니다. 주목해야 할 또 다른 중요한 사항은 HTTP.sys에서 타사 코드를 실행할 수 없으므로 웹 서버의 안정성이 향상된다는 것입니다.
  • WAS (Web Administration Service) - WAS는 사용자 모드 구성 및 프로세스 관리자입니다. 웹 관리 서비스 구성 요소는 구성 및 프로세스 관리의 두 가지 조작을 수행합니다. 여기서도 제 3자는 허용되지 않습니다. 웹 서버가 처음 초기화되면 WAS는 HTTP.sys 및 응용 프로그램 풀을 구성합니다. 또한 작업자 프로세스의 수명을 모니터링하고 제어합니다. 이를 위해 WAS는 프로세스 상태 모니터링, 관리자 설정 기준에 따라 자동으로 작업자 프로세스 재활용, 작업자 프로세스 시작 및 중지 등과 같은 활동을 수행 할 수 있습니다.
  • 응용 프로그램 풀 — 응용 프로그램 풀은 일련의 웹 사이트 및 응용 프로그램을 관리하는 데 사용됩니다. 각 응용 프로그램 풀은 HTTP.sys 내의 하나의 요청 큐와 이러한 요청을 처리하는 하나 이상의 Windows 프로세스에 해당합니다. IIS 6.0은 서버 당 최대 2,000 개의 응용 프로그램 풀을 지원할 수 있으며 동시에 여러 개의 응용 프로그램 풀이 작동 할 수 있습니다. 예를 들어, 부서 서버는 한 응용 프로그램 풀에 HR이 있고 다른 응용 프로그램 풀에 재무가있을 수 있습니다. 인터넷 서비스 공급자 (ISP)는 한 응용 프로그램 풀에 한 고객의 웹 사이트와 응용 프로그램이 있고 다른 응용 프로그램 풀에 다른 고객의 웹 사이트가있을 수 있습니다. 응용 프로그램 풀은 Windows Server 2003 프로세스 경계에 의해 다른 응용 프로그램 풀과 분리됩니다. 따라서 하나의 응용 프로그램 풀에있는 응용 프로그램은 다른 응용 프로그램 풀에있는 응용 프로그램의 영향을받지 않으며 현재 응용 프로그램 풀에서 서비스하는 동안 응용 프로그램 요청을 다른 응용 프로그램 풀로 라우팅 할 수 없습니다. 서버가 실행되는 동안 응용 프로그램을 다른 응용 프로그램 풀에 쉽게 할당 할 수 있습니다.
  • 작업자 프로세스-작업자 프로세스는 응용 프로그램 풀의 웹 사이트 및 응용 프로그램에 대한 요청을 처리합니다. ISAPI 필터 및 확장의로드와 인증 및 권한 부여를 포함한 모든 웹 응용 프로그램 처리는 하나 이상의 호스트 작업자 프로세스에로드되는 새로운 WWW 서비스 DLL에 의해 수행됩니다. 작업자 프로세스 실행 파일의 이름은 W3WP.EXE입니다.

 

http://blog.sina.com.cn/s/blog_55ba8b460100nw5e.html
728x90