In den letzten Wochen haben wir einige Leistungsprobleme untersucht, bei denen unsere MVC-Anwendung bei der ersten Anfrage sehr langsam reagiert hat. Wir sprechen wie 30-45 Sekunden für die erste Anfrage und 3 Sekunden für jede neue Ansicht. Unsere MVC-Anwendung verwendet unsere OData-API (Web-API), die sich auf demselben Server befindet. Neben den gleichen Leistungsproblemen wie bei der MVC-Anwendung wird die erste Abfrage nach Entity Framework Version 6 in 6 Sekunden ausgeführt und neue Abfragen werden 200 ms langsamer ausgeführt als nachfolgende Abfragen.
Um unsere Anforderungen zu erfüllen, haben wir uns entschieden, alle bekannten Ef-Abfragen auszuführen und alle unsere MVC / API-Endpunkte von Application_Start in Global.asax zu treffen. Dies scheint für mindestens ein paar Stunden in Ordnung zu sein, aber nach einiger Zeit ohne Verwendung reagiert die erste Anfrage auf jede MVC-Ansicht in 3-5 Sekunden.
Wir haben die Websites so konfiguriert, dass sie "Immer an" sind und wir haben nichts in den IIS-Protokollen oder der Protokollierung gefunden, die wir zu Application_Start hinzugefügt haben. Es scheint also, dass unsere Anwendungen zumindest nicht recycelt werden. Ich vermute, dass eine Art von IIS-Cache gelöscht wird oder vielleicht ein Ef-Cache? Irgendwelche Vorschläge sind willkommen.
Sie sollten die Einstellung "Immer aktiviert" für Ihre Web-App aktivieren.
Sie können das von portal.azure.com - & gt; das Blade Ihrer Seite - & gt; Alle Einstellungen - & gt; Anwendungseinstellungen - & gt; Immer an
Hier finden Sie Einzelheiten: Ссылка
Wenn Always On deaktiviert ist, wird die Site nach 20 Minuten Inaktivität deaktiviert, um Ressourcen für andere Websites freizugeben, die möglicherweise auf demselben App Service Plan ausgeführt werden.
Ich habe das gleiche Problem und leider ist die Einstellung "Immer ein" auf den kostenlosen und freigegebenen Preisstufen nicht verfügbar. Ich habe einen einfachen Weg gefunden, die Web App warm zu halten, damit sie nicht entladen wird, um einen Application Insights Ping-Test in einem 15-minütigen Intervall gegen die Wep App URL einzurichten. Eine Anleitung zur Vorgehensweise finden Sie unter hier
Eine schnelle Lösung kann darin bestehen, einen Hintergrundjob zu erstellen, der Ihre Website häufig anpingt, um den Leerlaufzustand der Webanwendung zu vermeiden.
Oder
Versuchen Sie, den Sql Server db plan & amp; Testen Sie entsprechend.
Viel Glück & amp; hoffe das hilft.
Haben Sie versucht, dieses Problem zu untersuchen, indem Sie die fehlgeschlagene Anforderungsprotokollierung aktiviert haben?
Azure-Portal → Ihr App-Service → Überwachung → Diagnoseprotokolle → Verfolgung fehlgeschlagener Anfragen (Ein)
Ich habe ein ähnliches Problem festgestellt, das dadurch verursacht wurde, dass der Zugriff auf die Anwendung eingeschränkt wurde, indem der Abschnitt ipSecurity
in web.config verwendet wurde. Wenn Sie den Zugriff auf diese Weise beschränken, müssen Sie die IP Ihres App-Service auf die weiße Liste setzen.
Tags und Links azure-web-sites