2017-05-22 1 views
0

WebAPI 프로젝트가있는 AppService가 있습니다. 이 서비스를 다시 시작하거나 새 버전을 업로드하면 처음 호출 한 각 끝점이 매우 느리게 응답합니다 (> 15 초). 모든 엔드 포인트를 한 번 클릭하면 응용 프로그램이 올바르게 작동합니다.Azure AppService 재부팅 후 재시작이 늦음

내 Azure에는 PayAsYouGo 서브 스크립 션이 있으며 AlwaysOn 기능은 AppSercice이며 true입니다. 선별 (Opt-Out) 환경 변수 ASPNET -

SnapshotHelper :: RestoreSnapshot : PortableCompilationOutput = 사실

내가 사용 컴파일하는 동안

다음과 같은 매개 변수 :

/p:PrecompileBeforePublish=true 
/p:UseMerge=true 
/p:SingleAssemblyName=AppCode 
를 추적 로그에서 나 또한 여러 항목을 보았다

답변

2

문제는 Azure 인스턴스가 처음 호출되지 않는다는 것입니다. 먼저 응용 프로그램 준비 프로세스를 사용해야합니다. 이를 처리하는 한 가지 방법은 web.config during swaps and deployments을 통해 구성된 application initialization module을 사용하는 것입니다.

배포를 시작한 후에 시작 프로세스의 일부로 사이트의 페이지를 호출 할 수 있습니다.

<system.webServer> 
    <applicationInitialization> 
    <add initializationPage="/warmup-cache.php" hostName="appinitwarmup.azurewebsites.net"/> 
    </applicationInitialization> 
</system.webServer> 
+0

답장을 보내 주셔서 감사합니다. 두 가지 추가 질문이 있습니다. 1. 각 엔드 포인트에서 인증이 필요한 경우, 위의 솔루션이 어떻게 작동합니까? 2. WebAPI에 내 끝점 각각에 대해 krzykol

+0

개별 사이트를 워밍업하면됩니다. 엔드 포인트가 동일한 웹 사이트 인스턴스에서 동일한 API의 두 섹션 일 경우 둘 모두가 해당 시점에 코드를로드하므로 하나만 호출하면됩니다. 첫 번째 실제 호출이 들어 오기 전에 메모리에 코드 'hot'과 모든 응용 프로그램 시작 코드가 실행되기 때문에 인증은 중요하지 않습니다. –

+0

안녕하세요, 귀하의 회신에 감사드립니다. 그러나 그것은 저를 위해 wokred가 아닌 것처럼 보입니다. . 이 사이트는 https://stackoverflow.com/questions/36333016/azure-website-each-page-loading-slow와 같이 작동하지만 이상한 점은 Azure 가입으로 지불 할 때만이 방식으로 작동한다는 것입니다. bizspark 가입시 동일한 사이트가 다르게 작동합니다. 사이트가 처음로드 될 때 한 번만 기다려야합니다. 그러면이 사이트의 다른 모든 페이지가 빠르게로드됩니다. 지불 할 때마다 각 개별 페이지를 클릭해야하며 그 다음에는 빠르게 작동합니다. 왜 이것이 2 Azures에 따라 다른지? – krzykol

관련 문제