source

Appdomain 재활용이란 무엇입니까?

ittop 2023. 7. 31. 21:54
반응형

Appdomain 재활용이란 무엇입니까?

앱도메인 재활용이 정확히 무엇인지 알고 싶습니다.닷넷 애플리케이션에서 처음으로 aspx 페이지를 요청할 때 해당 앱에 대한 앱 도메인이 생성되고 필요한 어셈블리가 해당 앱 도메인에 로드되고 요청이 처리되는 것으로 알고 있습니다.이제 web.config 파일이나 bin 폴더 등의 내용이 수정되면 app 도메인이 "재활용"됩니다.제 질문은 재활용 프로세스가 끝나면 앱 도메인에 어셈블리가 로드되어 다음 요청을 처리할 준비가 되어 있는지 여부입니다.또는 어셈블리를 로드하도록 트리거하려면 페이지를 요청해야 합니까?

글쎄요, 저는 실마리가 순조롭게 최종 결론에 도달하고 있었다고 생각하지만, 결국은 그렇지 않았습니다.

저는 제가 방금 다른 웹 사이트에서 읽은 내용을 활용하여 제가 이해한 내용을 바탕으로 질문에 답변하도록 노력하겠습니다.

우선, 애플리케이션 풀 이외의 재활용이라는 용어는 누군가를 혼란스럽게 할 수 있으므로 사용자 스스로는 사용하지 않도록 합니다.이제 프로세스, 풀 및 AppDomain에 액세스하면 다음과 같은 그림이 표시됩니다.

응용 프로그램 풀은 간단히 말해 W3WP.exe라는 프로세스에 의해 실행되고 유지되는 메모리 영역입니다.애플리케이션 풀을 재활용한다는 것은 프로세스를 중단하고 메모리에서 제거한 다음 새로 할당된 프로세스 ID를 사용하여 완전히 새로운 작업자 프로세스를 시작한다는 것을 의미합니다.

애플리케이션 도메인과 관련하여, 컨테이너 역할을 하는 앞서 언급한 영역 내에서 메모리 영역의 하위 집합으로 봅니다.즉, 메모리의 프로세스(이 경우 W3WP.exe)는 애플리케이션 도메인이라고 하는 하위 집합 영역을 저장하는 애플리케이션용 매크로 메모리 영역입니다.그러나 메모리의 한 프로세스는 지정된 응용 프로그램 풀 내에서 실행되도록 할당된 각 응용 프로그램에 대해 서로 다른 응용 프로그램 도메인을 저장할 수 있습니다.

재활용과 관련하여 처음에 말씀드렸듯이, 이는 애플리케이션 풀 전용으로 예약하는 것입니다.AppDomain의 경우 오해를 피하기 위해 '다시 시작'이라는 용어를 사용하는 것을 선호합니다.이를 기준으로 AppDomain을 다시 시작한다는 것은 기존 구성 새로 고침과 같이 새로 추가된 설정으로 지정된 응용 프로그램을 다시 시작한다는 것을 의미합니다.이는 AppDomain이라는 메모리 하위 영역의 경계 내에서 발생하며, 궁극적으로 각 애플리케이션 풀과 관련된 프로세스 내에 있습니다.이러한 새 설정은 다음과 같은 파일에서 나올 수 있습니다.

web.config, machine.config, global.asax, Bin 디렉토리, App_Code,

그리고 다른 사람들도 있을 수 있습니다.

AppDomain은 서로 격리되어 있습니다. 이는 전적으로 의미가 있습니다.그렇지 않은 경우, 예를 들어 응용 프로그램 1의 web.config가 변경되면 해당 풀에 할당된 다른 모든 응용 프로그램이 다시 시작됩니다. 이는 Microsoft 및 다른 사용자가 원하지 않는 것입니다.

요점을 요약하자면,

  • 파일(W3WP.exe)
    • 앱 도메인 1
    • 앱도메인 2
    • 앱도메인 3
    • 앱도메인 n

n = 지정된 W3WP.exe에 의해 관리되는 응용 프로그램 풀에 할당된 응용 프로그램의 수

  • 프로세스는 서로 격리된 메모리 영역입니다.
  • AppDomain은 동일한 프로세스 내에서 서로 격리된 하위 메모리 영역입니다.
  • 글로벌 IIS 설정 변경 시 응용 프로그램 풀을 다시 사용해야 할 수 있습니다(W3WP.exe의 작업자 프로세스 실행 및 시작).
  • 애플리케이션 전체 설정은 AppDomain 문제를 변경하며, 위 개요와 같은 일부 특정 파일이 변경된 후 다시 시작될 수 있습니다.

자세한 내용은 다음을 권장합니다.

http://blogs.msdn.com/b/david.wang/archive/2006/03/12/thoughts-on-iis-configuration-changes-and-when-it-takes-effect.aspx

IIS의 응용 프로그램 풀이 재활용되는 원인은 무엇입니까?

http://blogs.msdn.com/b/tess/archive/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles.aspx

브라질에서 안부 전해주세요!

이것을 보세요. 설명이 될 수도 있습니다.

http://weblogs.asp.net/owscott/archive/2006/02/21/ASP.NET-v2.0-2D00-AppDomain-recycles_2C00_-more-common-than-before.aspx#440333

일반적으로.ASP에서 "첫 번째 히트"라고 하는 것.NET 웹 사이트는 컴파일 및 AppDomain 생성으로 인해 일반적으로 시간이 더 오래 걸립니다.

사이트를 배포할 때마다 Visual Studio의 "웹 사이트 게시" 기능을 사용하여 웹 사이트를 사전 컴파일해야 합니다.그러면 "첫 번째 적중" 페널티가 줄어듭니다.그리고 구성을 Debug가 아닌 Release로 설정해야 합니다!

재활용은 앱 도메인을 호스팅하는 프로세스를 종료합니다.PID를 재활용하면 PID가 변경되는 것을 알 수 있습니다.

AppDomain을 언로드하면 AppDomain의 모든 어셈블리가 언로드되므로 이 어셈블리를 다시 사용할 수 있습니다.

기억해야 할 중요한 것은 CLR이 프로세스에 로드되면 제거할 수 없다는 것입니다.따라서 CLR이 로드되는 즉시 작업을 수행해야 하는 경우에는 CLR이 다시 로드되지 않으므로 AppDomain을 단순히 언로드하는 것만으로는 도움이 되지 않습니다.

또한 IIS가 AppDomain을 호스팅할 수 있는 유일한 프로세스가 아니며, 어떤 프로세스든 어셈블리를 언로드하기 위해 모든 프로세스를 중지할 수 있습니다.

페이지가 "업데이트 가능"인 경우, 사용하기 전에 편집해야 합니다.즉, 첫 번째 요청 시 어셈블리가 로드되고 컴파일되며 액세스할 수 있도록 준비됩니다.이러한 파일이 변경될 때마다(일부 바이러스 소프트웨어에서도 파일의 수정 날짜를 변경하여 이를 트리거할 수 있습니다!) 앱 도메인이 재활용됩니다.

웹 응용 프로그램을 업데이트할 수 없도록 구성할 수 있습니다.모든 항목이 DLL로 컴파일되어 표시되지 않습니다.ASPX 또는 .가상 디렉터리의 CS 파일입니다.코드를 업데이트하기가 어려워집니다(웹 페이지에 추가 텍스트를 추가해야 합니까?).재컴파일 시간!), 그러나 웹 앱의 가용성을 높입니다.

그러나 파일이 변경된 경우에도 웹 앱이 재활용되는 것을 방지하지는 못합니다.예를 들어 web.config를 편집하면 앱 도메인이 컴파일된 경우에도 재사용됩니다.

언급URL : https://stackoverflow.com/questions/37564/what-exactly-is-appdomain-recycling

반응형