Die Verwendung der Anwendungsinitialisierung mit Azure erweist sich immer noch als äußerst langsam

7

Ich ging davon aus, dass beim Aktivieren der IIS8-Anwendungserwärmung in Azure alle meine Websites beim Laden ziemlich sofort verfügbar sind. Dies ist jedoch nicht der Fall .

Also, im Grunde habe ich eingeschaltet preloadEnabledund stellen Sie die startModezu AlwaysRunningverwenden:

public class WebRole : RoleEntryPoint
{
    public override void Run()
    {
        using (var serverManager = new ServerManager())
        {
            foreach (var application in serverManager.Sites.SelectMany(c => c.Applications))
            {
                application["preloadEnabled"] = true;
            }

            foreach (var appPool in serverManager.ApplicationPools)
            {
                appPool["startMode"] = "AlwaysRunning";
            }

            serverManager.CommitChanges();
        }
    }
}

Ich habe auch das Recycling der IIS-App-Pools und den regelmäßigen IIS-Neustart mithilfe der folgenden Startaufgabe deaktiviert:

%windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.processModel.idleTimeout:00:00:00

%windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.recycling.periodicRestart.time:00:00:00

Auf jeder meiner Websites habe ich Folgendes in meine web.config eingefügt:

<system.webServer>
    <applicationInitialization skipManagedModules="true">
        <add initializationPage="/" />
    </applicationInitialization>
</system.webServer>

Trotzdem dauern alle meine Websites beim ersten Treffer 30 Sekunden . Wenn ich eine Remote-Verbindung zum Computer herstelle, bevor ich auf eine der Sites treffe, werden alle Einstellungen in IIS angewendet. Ich kann auch sehen, dass die Sites etwa 60-80 MB Speicher im Leerlauf haben (was andeutet, dass sie vorinstalliert wurden).

Meine Frage ist, ist das so gut wie das Vorladen? Sicherlich soll es schneller sein? Ich hatte erwartet, dass die Verzögerung minimal ist, vielleicht 2 oder 3 Sekunden beim ersten Laden?

mattytommo
quelle

Antworten:

2

Ich gehe davon aus, dass Sie tatsächlich das Anwendungsinitialisierungsmodul installiert haben, das NICHT in einer Standard-IIS8-Installation enthalten ist.

In diesem großartigen Beitrag erfahren Sie, wie Sie alles zum Laufen bringen und hoffentlich können Sie damit Probleme lösen.

Paul Hiles
quelle
0

Obwohl Sie Ihre Frage nicht direkt beantworten, können Sie möglicherweise die neuen Überwachungsfunktionen in Azure nutzen, um Ihre Website am Laufen zu halten.

Wenn Sie im Verwaltungsportal unter dem Cloud-Dienst nachsehen, gibt es einen Abschnitt mit der Bezeichnung "Web-Endpunktstatus". Wenn Sie diesen Wert festlegen, fragt Azure diese Seite etwa alle paar Minuten ab.

Matthew Steeples
quelle