2017-05-22 5 views
0

Ich habe einen AppService mit einem WebAPI-Projekt darauf. Nachdem ich diesen Dienst neu gestartet oder eine neue Version hochgeladen habe, reagiert jeder der Endpunkte, die ich zuerst anrufe, sehr langsam (> 15 Sek.). Wenn ich einmal durch alle Endpunkte klicke, funktioniert die Anwendung einwandfrei.Azure AppService reagieren langsam nach Neustart

Mein Azure hat ein PayAsYouGo-Abonnement und ich habe AlwaysOn Feature von AppSercice auf true festgelegt. In den Trace-Protokolle habe ich auch mehrere Einträge mit:

SnapshotHelper :: RestoreSnapshot - optout Umgebungsvariable aspnet: PortableCompilationOutput = true

Beim Übersetzen Ich bin mit folgenden Parametern:

/p:PrecompileBeforePublish=true 
/p:UseMerge=true 
/p:SingleAssemblyName=AppCode 

Antwort

2

Das Problem ist, dass Ihre Azure-Instanz nicht zum ersten Mal aufgerufen wurde. Sie müssen einen Warm-up-Prozess für die Anwendung verwenden, um den Prozess voranzutreiben. Eine Möglichkeit, dies zu umgehen, ist die Verwendung von application initialization module konfiguriert über Ihre web.config during swaps and deployments.

Dadurch können Sie eine Seite auf Ihrer Site als Teil des Startvorgangs aufrufen, nachdem Sie Ihre Bereitstellungen durchgeführt haben.

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

Vielen Dank für Ihre Antwort. Ich habe zwei zusätzliche Fragen. 1. Was ist, wenn für jeden meiner Endpunkte eine Authentifizierung erforderlich ist? Wie funktioniert die obige Lösung in diesem Fall? 2. Muss ich krzykol

+0

Sie müssen nur jede einzelne Website aufwärmen. Wenn die Endpunkte nur zwei Abschnitte derselben API auf derselben Website-Instanz sind, müssen Sie nur eine aufrufen, da beide ihren Code an diesem Punkt geladen haben. Die Authentifizierung ist nicht so wichtig, da Sie nur wollen, dass der Code "hot" im Speicher und jeder Startup-Code der Anwendung lief, bevor der erste echte Anruf kommt. –

+0

Hallo, danke für Ihre Antwort, aber es sieht aus, dass es nicht für mich geweckt . Die Website verhält sich wie hier https://stackoverflow.com/questions/36333016/azure-website-each-page-loading-slow, aber das Seltsamste ist, dass es nur so funktioniert auf meinem Gehalt, wenn Sie Azure-Abonnement gehen. Auf bizspark-Abonnements verhält sich die gleiche Seite anders - hier muss ich nur einmal warten - wenn die Seite das erste Mal geladen wird - dann werden alle anderen Seiten dieser Seite schnell geladen. Auf Pay as you go muss ich auf jede einzelne Seite klicken und erst dann funktionieren sie schnell. Irgendeine Idee, warum dies basierend auf 2 Azures unterscheidet? – krzykol

Verwandte Themen