IIS 앱 풀, 작업자 프로세스, 앱 도메인
누구든지 IIS에서 응용 프로그램 풀, 작업자 프로세스 및 응용 프로그램 도메인 간의 차이점을 설명 할 수 있습니까? 또한 그들은 어떻게 함께 작동합니까? 몇 가지 기사를 읽었지만 여전히 약간 혼란 스럽습니다.
- IIS에서 생성 된 각 웹 사이트가 응용 프로그램이됩니까?
- 각 애플리케이션이 하나의 작업자 프로세스와 연결되어 있습니까?
- 앱 도메인은 어디에 등장합니까?
다른 말로 말하려고합니다.
서버에는 함께 실행되는 많은 asp.net 사이트가있을 수 있습니다. 각 사이트는 앱 도메인 입니다.
각각에 하나의 응용 프로그램 풀을 할당해야합니다 . 많은 응용 프로그램 도메인 (사이트)은 동일한 응용 프로그램 풀을 가질 수 있으며 동일한 응용 프로그램 풀을 가지고 있기 때문에 동일한 프로세스 및 동일한 계정에서 실행되며 동일한 풀 설정을 갖습니다. 이 풀이 다시 시작되면 해당 풀 아래의 모든 사이트가 다시 시작됩니다.
이제 각 풀은 하나 이상의 작업자 프로세스를 가질 수 있습니다 . 각 작업자 프로세스는 사이트를 실행하는 다른 프로그램으로, 자체 정적 변수, 다른 시작 중지 호출 등을 갖습니다. 다른 작업자 프로세스는 함께 통신하지 않으며 데이터를 교환하는 유일한 방법은 공용 파일 또는 공용 데이터베이스를 사용하는 것입니다. 둘 이상의 작업자 프로세스가 있고 그중 하나가 오랜 시간 계산을 수행하면 다른 하나가 인터넷 통화를 처리하고 콘텐츠를 표시 할 수 있습니다.
많은 작업자 프로세스를 단일 풀에 할당하면 호출 된 웹 가든을 만들고 컴퓨터가 하나의 처리 기계 인 경우 사이트가 둘 이상의 컴퓨터에서 실행되는 것과 같습니다.
각 작업자 프로세스에는 많은 스레드가있을 수 있습니다.
더 많은 작업자 프로세스가 사용자에게 미치는 영향 : 작업자 프로세스
가 하나 인 경우 모든 것이 더 간단합니다. 애플리케이션간에 모든 정적 변수가 동일하며를 사용하여 lock
동기화합니다. 둘 이상의 작업자 프로세스 를
할당하면 정적 변수에 대해 계속해서를 사용합니다 . 정적 변수는 사이트의 여러 실행간에 다르지 않으며 공통 리소스가있는 경우 (예 : 디스크에 썸네일 생성) 그런 다음 작업자 프로세스를 .lock
Mutex
메모 하나 더. 당신이 할 때 그 소리는 더 작업자 프로세스를 당신은 더이 비동기 페이지가로드를 원활하게 할 수있다. 페이지로드에 대한 전체 프로세스를 잠그는 asp.net의 세션 처리기에 작은 문제가 있습니다. 이는 좋지만 좋지는 않지만 알고 있고 처리하거나 변경하는 경우에 달려 있습니다.
따라서 작업자 프로세스가 많은 하나의 사이트에 대해서만 이야기 해 보겠습니다. 여기서 공통 리소스 변경 사항을와 동기화해야하는 문제에 직면합니다 Mutex
. 그러나 세션을 사용하는 페이지 / 핸들러는 세션이 잠그기 때문에 비동기 적이 지 않습니다. 이것은 많은 포인트의 동기화를 스스로 만들지 않기 때문에 시작하기에 좋습니다.
이 주제에 대한 몇 가지 질문 :
동일한 세션을 공유 할 때 다른 웹앱을 처리하는 동안 차단 된
웹앱 웹 서비스에 대한 jQuery Ajax 호출이 동기식 인 것 같습니다.
ASP.NET 서버가 페이지를 비동기 적으로 처리하지 않음
ASP.Net의 세션을 완전히 대체
이제이 세션 잠금은 다른 사이트에 영향을주지 않습니다.
여러 사이트 중에서 더 많은 작업을 수행하는 프로세스는 한 사이트가 장기 실행 프로세스로 다른 사이트를 차단하지 않도록 도와줍니다.
또한 다른 사이트 간에는 더 많은 풀이 도움이 될 수 있습니다. 각 풀에는 적어도 하나의 작업 프로세스가 있지만 프로세스 탐색기를 사용하여 스스로 기억하고 볼 수 있습니다. 각 작업 프로세스는 컴퓨터의 더 많은 메모리와 16G 메모리가있는 하나의 큰 서버를 차지합니다. 그리고 하나의 SQL 서버는 너무 많은 다른 작업 프로세스를 가질 수 없습니다. 예를 들어 100 개의 공유 사이트가있는 서버에서는 100 개의 다른 풀을 가질 수 없습니다.
- 하나의 IIS 서버에 여러 응용 프로그램 풀이있을 수 있습니다.
- 하나의 웹 응용 프로그램이 하나의 응용 프로그램 풀에 바인딩됩니다.
- 하나의 응용 프로그램 풀에 둘 이상의 작업자 프로세스가있을 수 있습니다 (Web Garden이 활성화 된 경우).
- 하나의 작업자 프로세스에 여러 앱 도메인이있을 수 있습니다. 하나의 앱 도메인은 하나의 작업자 프로세스에만 있습니다.
- One app domain may have multiple threads. One thread can be shared by different app domains in different time.
The meaning to ASP.NET developers: to make your web site scalable, don't use in-proc session and don't use static class variable lock for synchronization.
Yes, though not every application is a website. You can have an application that is nested under a website.
Yes, every application has to have one worker process (application pool), though one application pool can server several applications. A single web application can be distributed (web garden/farm) meaning that it will run in multiple processes.
Each process will run in its own app domain (every application pool is a separate app domain).
From MSDN.
An application is a grouping of content at the root level of a Web site or a grouping of content in a separate folder under the Web site's root directory.
An application pool defines a group of one or more worker processes, configured with common settings that serve requests to one or more applications that are assigned to that application pool. Because application pools allow a set of Web applications to share one or more similarly configured worker processes, they provide a convenient way to isolate a set of Web applications from other Web applications on the server computer. Process boundaries separate each worker process; therefore, application problems in one application pool do not affect Web sites or applications in other application pools. Application pools significantly increase both the reliability and manageability of your Web infrastructure.
From the source link:-http://weblogs.asp.net/owscott/archive/2007/09/02/application-vs-appdomain.aspx
응용 프로그램은 IIS 용어이지만 ASP.NET에서 사용하는 용어입니다. 기본적으로 샌드 박스 또는 경계 집합을 만들어 다른 사이트 또는 사이트의 일부를 다른 사이트와 구분합니다.
AppDomain은 .NET 용어입니다. (IIS7에서 AppDomain은 IIS 내에서 더 큰 역할을하지만 대부분 ASP.NET 용어입니다.)
작업자 프로세스는 웹 애플리케이션의 요청을 처리하는 데 사용됩니다.
참고 URL : https://stackoverflow.com/questions/14105345/iis-app-pools-worker-processes-app-domains
'code' 카테고리의 다른 글
std :: set에 대한 std :: back_inserter? (0) | 2020.09.22 |
---|---|
정의되지 않은 것을 덮어 쓰지 않는다고 가정하는 것이 JavaScript에서 실제로 얼마나 위험한가요? (0) | 2020.09.22 |
바닐라 ECMAScript 6 Promise 체인 취소 (0) | 2020.09.22 |
Eclipse 작업 공간을 복제하는 방법 (0) | 2020.09.22 |
익명 함수로 addEventListener 인 EventListener를 제거하는 방법은 무엇입니까? (0) | 2020.09.22 |