Server

IIS에서 초기 로딩 속도 개선하기: 앱 풀 유지 및 Preload Enabled 설정

범데이 2025. 2. 22. 12:52

 

출처: https://www.scholarhat.com/tutorial/tools/application-pool-in-iis

 

 

IIS에서 ASP.NET MVC 애플리케이션을 운영하다 보면 첫 요청 속도가 느려지는 문제를 겪을 수 있다.

이는 앱 풀(Application Pool) 재활성화 정책 또는 서버 재부팅 시 초기 로딩이 필요하기 때문이다.

 

이번 포스트에서는 앱 풀 유지 및 "Preload Enabled" 관련 설정을 적용하여 서버 재시작 후에도 애플리케이션이 항상 실행되도록 설정하는 방법을 정리하고자 한다.


 

1. IIS 앱 풀 재활성화 주요 원인

IIS의 앱 풀은 일정 시간이 지나면 비활성화되거나 재시작될 수 있으며, 이 과정에서 모든 어셈블리와 View가 다시 로드되어 초기 로딩 시간이 길어질 수 있다. 이는 기본적인 앱 풀 재활성화 정책 때문이다.

 

(1) Idle Timeout

 

- 기본적으로 IIS는 일정 시간(기본값: 20분) 동안 요청이 없으면 앱 풀을 중지하여 리소스를 절약한다. 이후 새로운 요청이 발생하면 다시 시작되면서 애플리케이션이 초기화된다.

 

(2) Periodic Recycling

 

IIS는 안정성을 위해 일정 주기(기본값: 29시간)마다 앱 풀을 자동으로 재시작한다. 이로 인해 JIT(Just-In-Time) 컴파일 및 캐싱된 데이터가 초기화되어 초기 로딩 시간이 증가할 수 있다.

 

(3) JIT(Just-In-Time) 컴파일 영향

- .NET 애플리케이션은 실행 시점에서 JIT 컴파일을 수행하여 IL(Intermediate Language) 코드를 네이티브 코드로 변환한다.

- 앱 풀 재시작 시 모든 어셈블리가 다시 JIT 컴파일을 거치면서 성능 저하가 발생할 수 있다.

 

(4) View 및 캐싱된 데이터 재로딩

- Rezor View, 세션 상태, Static 변수, 메모리 캐시 등의 데이터가 초기화되면서 애플리케이션이 재시작 후 처음 요청을 처리하는 데 시간이 걸릴 수 있다.

 

(5) 메모리 사용량 초과로 인한 재시작

- 앱 풀이 설정된 메모리 사용 한계(Private Memory Limit)를 초과하면 IIS가 자동으로 앱 풀을 재활성화한다.

- 대용량 데이터 처리 또는 캐싱된 객체가 많을 경우 이로 인해 불필요한 재시작이 발생할 수 있다.

 

이러한 문제를 해결하기 위해 앱 풀 재활성화 정책을 조정하거나, 사전 컴파일(AOT), 캐싱 전략 개선, App Warm-up 기능 활성화 등의 대응이 필요하다.

 

 

 

2. IIS 앱 풀 재활성화 정책 변경

 

 

설정 변경 방법

1. IIS 관리자 (inetmgr) 실행

2. 응용 프로그램 풀 선택 → 배포된 앱 풀 선택 (예: MyAppPool)

3. 우측에서 "고급 설정" 클릭

4. 다음 설정을 확인하고 변경한다.

  - Idle Time-out (기본 20분) → 0 (비활성화)

  - Regular Time Interval (기본 1740초) → 0 (비활성화)

  - Start Mode (기본 "OnDemend") → "AlwaysRunning"

 

이렇게 설정하면 불필요한 앱 풀 비활성화 및 재시작을 방지할 수 있다.

 

 

 

3. IIS에서 "Preload Enabled" 설정 활성화

IIS는 기본적으로 첫 요청이 오기 전까지는 애플리케이션을 로드하지 않는다. 이로 인해 서버가 재부팅되거나 앱 풀이 재시작된 후 첫 페이지 접근이 느려지는 문제가 발생할 수 있다.

 

이를 해결하기 위해 "Preload Enabled" 설정을 활성화하면 웹 애플리케이션이 항상 실행된 상태를 유지한다.

 

 

 

 

IIS 설정 변경 방법

1. IIS 관리자 실행 (inetmgr)

2. 좌측 패널에서 "사이트" 선택

3. 배포한 웹사이트 선택 (예: MyWebsite)

4. 우측에서 "고급 설정" 클릭

5. 다음 설정을 확인 후 변경

  - Preload Enabled (기본 False) → True로 변경

 

이후 사이트를 재시작 시켜주면, 이후 서버가 시작되자마자 웹사이트가 실행된다.

 

 

결론

이제 IIS에서 앱 풀의 불필요한 비활성화 및 재시작을 방지하고, "Preload Enabled"설정을 적용하여 애플리케이션이 항상 실행된 상태를 유지할 수 있다. 이를 통해 서버가 재부팅되거나 앱 풀이 재시작된 후에도 첫 요청 속도가 빨라지며, 사용자 경험이 향상된다. 이러한 최적화 방법을 적용하면 애플리케이션의 가용성과 응답 속도를 높일 수 있다.

 

728x90
반응형