2014-02-19 4 views
0

나는 창백한 구름 서비스에 종사하고있다. 처음 로그인 버튼을 클릭하면 6 ~ 7 초가 걸리지 만 언젠가는 동일한 로그인 버튼을 클릭하면 2 초가 걸립니다. 왜 서버 측 코드가 두 프로세싱에서 동일하지만 후속 호출이 첫 호출보다 빠르지 만 왜 그런 일이 일어나는지 이해할 수 없습니다.첫 번째 서버 호출이 Windows Azure 클라우드 애플리케이션에서 후속 호출보다 더 많은 시간이 소요됩니까?

답변

5

"처음 공격"지연은 ASP.NET 응용 프로그램에서 매우 일반적입니다. JIT 컴파일의 오버 헤드가 있으며 다양한 "풀"(데이터베이스 연결, 스레드 등)이 초기화되지 않을 수 있습니다. ASP.NET Web Forms 응용 프로그램이있는 경우 각 .aspx 페이지는 서버가 처음 시작할 때 컴파일되며 서버가 시작될 때 컴파일되지 않습니다. 또한 후속 요청을 더 빠르게 만드는 다양한 캐싱 메커니즘 (서버 또는 클라이언트)은 첫 번째 히트에서 초기화되지 않습니다. 첫 번째 히트시 Application_Start의 모든 코드가 실행되어 라우팅 테이블을 설정하고 다른 초기화 작업을 수행합니다.

사용자가이 지연을 볼 수 없도록 여러 가지 조치를 취할 수 있습니다. 가장 간단한 방법은 새 페이지를 배포 한 후 모든 페이지를 조회하고 실행하는 자동화 된 프로세스를 작성하는 것입니다. 사이트가 실제로 배포 될 때 Application_Start보다 먼저 코드를 실행할 IIS 용 모듈도 있습니다. Search for "ASP.NET warmup"을 찾아보십시오.

ASP.NET 응용 프로그램 풀이 재활용되는 경우 일정 기간 사용하지 않으면 지연이 발생할 수도 있습니다. 이렇게하면 일련의 작업이 재설정되고 다음 요청시 시작 코드가 다시 실행됩니다. 사이트의 페이지를 자주 ping하도록 설정하여이 효과를 개선하면 응용 프로그램 풀이 재활용되면 다음 실제 사용자 요청 대신 자동으로 예열됩니다. 가동 시간 모니터링 서비스를 사용하면 Azure 생태계 자체 내에서이 작업 또는 예약 된 작업을 수행 할 수 있습니다.

관련 문제