앱 풀 재활용 후 어떻게 asp.net mvc webapp을 예열 할 수 있습니까?


23

IIS 8.0에서 ASP.NET MVC webapp을 실행하고 있습니다. 요청을하기 전에 내 응용 프로그램을 예열해야합니다. 새로운 코드를 배포 할 때 애플리케이션을 자동으로 준비하는 프로세스가 이미 있습니다. 그러나 주기적으로 앱 풀 재활용 이벤트가 발생하여 앱이 예열되지 않습니다.

앱 풀 재활용 이벤트를 감지하고 스크립트 또는 코드를 실행하는 가장 좋은 방법이 있습니까?

답변:


55

당신이 할 수있는 몇 가지가 있습니다 :

1. 응용 프로그램 초기화

IIS 8.0과 함께 제공되는 응용 프로그램 초기화 모듈 을 사용할 수 있습니다

당신은 이런 식으로 당신의 것을 가질 수 있습니다 web.config

<applicationInitialization
     doAppInitAfterRestart="true" >
   <add initializationPage="/" />
</applicationInitialization>

initializationPage="/"앱이 자동으로 시작될 때마다 앱의 루트 ( )에 요청을 보냅니다 .

응용 프로그램 풀의 시작 모드를 구성하여 Always RunningIIS를 다시 시작할 때마다 응용 프로그램 풀을 즉시 시작해야합니다 (응용 프로그램 풀을 마우스 오른쪽 단추로 클릭 한 경우Advanced Settings

여기에 이미지 설명을 입력하십시오

그리고 Preload사이트 자체 (적합한 다음 사이트를 클릭 Manage Site한 후Advanced Settings

여기에 이미지 설명을 입력하십시오

2. 유휴 시간 초과 비활성화

또한 Idle Time-out응용 프로그램 풀 의 in 을 0 (무한) 으로 변경하여 idleTimeout을 비활성화 할 수 있습니다 (기본적으로 IIS는 20 분 동안 활동 한 후 앱을 종료 함 ).

여기에 이미지 설명을 입력하십시오

3. 주기적 재활용 비활성화

또한 Regular Time Interval (minutes)IIS는 기본적 으로 해제 되어 29 시간마다 앱을 재활용합니다.

여기에 이미지 설명을 입력하십시오

에 대한


3
이러한 설정의 단점에 대한 의견을 부탁드립니다. 그들이 기본값이 아닌 이유가 있습니다.
user42134

2
모든 사이트가 항상 활성화되어 있기 때문에 동일한 IIS 상자에서 여러 사이트를 실행하는 경우 메모리 사용량이 높아 사이트 밀도가 매우 낮아집니다. 또한 응용 프로그램의 메모리 누수에 대한 보호 기능이 없습니다. IIS는 관리되는 언어가 웹에 널리 보급되기 전에 존재했으며 많은 앱이 오랫동안 실행 된 상태에서 메모리 누수 및 이상한 상태가 된 기본 처리기를 실행하고 있음을 명심하십시오. 한밤중에 깨어나야하는 시스템 관리자가 앱 문제로 인해 서버를 재설정하기 위해 수행되었습니다. 그것들은 여전히 ​​이전 버전과의 비교 가능성 때문에 여전히 기본값입니다
ahmelsayed

1
IIS 7.5의 대안 -Windows Server 2008 R2 ?
Kiquenet

2
당신이 얻을 수있는 응용 프로그램 초기화 모듈을 작업 # 1에 대한 IIS 7.5. # 2와 # 3은 IIS 7.5에 그대로 적용 가능
ahmelsayed

1
이것을 사용하는 사람들을위한 참고 자료 : applicationInitialization들어가기<configuration><system.webServer>
Paul

1

내 경험상 AlwaysRunning 및 Preload를 사용하면 속도가 크게 향상되지 않습니다. 대부분의 대기 시간은 동적 컴파일 (aspx 프리 컴파일로 수정 가능) 및 어셈블리를 메모리 및 캐싱에로드하는 데 소요됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.