2011-08-11 2 views
4

IIS 구성에서 응용 프로그램 풀의 startMode = "AlwaysRunning"특성과 응용 프로그램의 serviceAutoStartEnabled = "true"특성을 설정했습니다. 나는 심지어 serviceAutoStartProvider를 설정하고 "워밍업"코드가 실행되고 있음을 볼 수 있습니다. 나는 또한 i3reset 후에 w3wp 프로세스가 자동으로 시작되는 것을 볼 수 있습니다. 여전히 ASP.NET MVC 애플리케이션에 대한 첫 번째 요청은 자동 시작이없는 경우와 똑같습니다. 실종되었거나 프로파일 러없이 쉽게 디버깅 할 수있는 방법이 있습니까?IIS 7.5 자동 시작 기능을 활성화 한 후 첫 번째 요청은 여전히 ​​느립니다.

이 기능은 첫 번째 요청 성능에 전혀 영향을 미치지 않을 것으로 예상됩니까? 실제로 첫 번째 요청에서 수행 할 작업의 대부분은 작업자 프로세스가 준비되고 .NET appdomain과 심지어 모든 .NET 어셈블리가로드되었다는 것을 전제로합니다.

답변

2

최근에이 문제를 조사했습니다.

내가 알 수있는 한, autoStart 기능은 IIS 요청자 이전에 IIS 작업자 스레드 (기본적으로 풀 전용)가 JIT로 컴파일되도록합니다.

그러나 컴파일 된 것은 어셈블리 및 종속성의 대량 일 뿐이지 만 반드시 필요한 것은 아닙니다.

첫 번째 요청이 발생하고 작성한 메소드가 처음 호출되면 JITer는 아직 컴파일되지 않은 메소드에 대해 최종 컴파일을 수행합니다.

autoStart의 장점은 .Net이 작업의 90 %를 수행 할 수 있지만 첫 번째 요청이 발생하고 아직 액세스하지 못한 방법이 실행될 때 마지막 10 %는 여전히 지불된다는 것입니다 처음으로.

+1

문제는 서버의 첫 번째 요청에 소요되는 시간면에서 autoStart의 0 % 이점을 확인하는 것입니다. – Konstantin

+0

제대로 작동하는지 확인할 수 있습니까? 구성 파일을 변경하거나 응용 프로그램 풀을 재활용 한 후 JIT가 응용 프로그램 인 동안 IIS 스파이크 CPU 사용이 몇 초 동안 표시됩니다. – Andrew

관련 문제