Ich habe eine API erstellt auf Azure gehostet. Die API wird mit Java und Spring Framework erstellt. Alles funktioniert gut, außer der ersten Anfrage jeden Morgen, die mehr als 1 Minute dauert zu verarbeiten. Ich habe den Server auf "Immer ein" konfiguriert, aber das scheint keine Wirkung zu haben. Ich weiß, dass der Flaschenhals der Anwendungsserver ist, denn selbst eine einfache HTTP-Anfrage ohne Datenbankaufrufe dauert mindestens eine Minute. Ich habe einen kostenlosen Abrechnungsplan verwendet. Kann dies Auswirkungen auf die Funktion "Immer ein" haben? Wenn nicht, was verursacht diese langsame Belastung?Azure App Service langsam auf erste Anfrage
Antwort
Die Funktion ALWAYS ON
kann nur in der Preisstufe Basic oder Standard aktiviert werden. Wenn Sie also einen kostenlosen Abrechnungsplan verwendet haben, wurden die Optionen für die Funktion always on
deaktiviert. Sie können jedoch versuchen, Ihren Azure App Service kontinuierlich zu pingen, um ihn am Leben zu erhalten.
Weitere Informationen finden Sie im Blog http://wp.sjkp.dk/windows-azure-websites-and-cloud-services-slow-on-first-request/.
Ich bin auch interessiert zu verstehen, warum die erste Anfrage immer langsam ist. Ich betreibe eine mittlere Instanz mit "always on" aktiviert, aber wenn es keine Aktivität in der API für ein bisschen gibt (ich habe es nicht zeitlich festgelegt, aber sogar 10 Minuten von Inaktivität), die API nimmt eine Menge davon Zeit zu antworten. Es macht mich tatsächlich nervös, angesichts der Reaktionszeit in die Produktion zu gehen. – jdixon04
In Bezug auf meinen anderen Kommentar befindet sich die API in einem der Bereitstellungsslots. Hat dies Einfluss darauf, wie Azure mit diesen Instanzen umgeht und möglicherweise ihre Antwortzeiten beeinflusst? – jdixon04
Wir hatten ein ähnliches Problem, d. H. Nach einiger Leerlaufzeit wurde die Anwendung entladen und musste erneut gestartet werden, obwohl Always on aktiviert war.
Wir haben den Azure App Services Support kontaktiert, um das Problem zu lösen. In unserem Fall verursachte eine dauerhafte Umleitung von http zu https in web.config
das Problem (es scheint Fälle zu geben, in denen Always On nicht mit Tomcat Web Apps in Kombination mit Rewrite-Regeln funktioniert).
Das Problem könnte durch Hinzufügen einer Ausnahme für AlwaysOn
für die Umleitung gelöst werden. Nachfolgend finden Sie die aktualisierte web.config
finden, die von einem Azure Support Engineer vorgeschlagen wurde:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="redirect HTTP to HTTPS" enabled="true" stopProcessing="true" lockItem="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
<add input="{HTTP_USER_AGENT}" pattern="AlwaysOn" ignoreCase="true" negate="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
die App-Service-Plan verwenden Sie diese API App zu hosten? – Mani
Ich benutze den S1 Standard App Service Plan – Andreas