it-swarm.com.de

Wie kann ich meine asp.net mvc-Webanwendung nach dem Recycling eines App-Pools aufwärmen?

Ich führe eine ASP.NET MVC-Webanwendung in IIS 8.0) aus. Meine Anwendung muss vor dem Annehmen von Anforderungen aufgewärmt werden. Wir haben bereits einen Prozess zum automatischen Aufwärmen der Anwendung, wenn wir neuen Code bereitstellen. Es werden jedoch regelmäßig App Pool Recycle-Ereignisse angezeigt, die dazu führen, dass die App nicht aufgewärmt wird.

Gibt es eine bewährte Methode zum Erkennen eines App-Pool-Recycling-Ereignisses und zum Ausführen eines Skripts oder eines Codes?

24
AgileJon

Sie können verschiedene Dinge tun:

1. Anwendungsinitialisierung

Sie können Application Initialization Module verwenden, das im Lieferumfang von IIS 8.0) enthalten ist

sie können so etwas in Ihrem web.config haben.

<applicationInitialization
     doAppInitAfterRestart="true" >
   <add initializationPage="/" />
</applicationInitialization>

Dadurch wird bei jedem automatischen Start Ihrer App eine Anfrage an das Stammverzeichnis Ihrer App (initializationPage="/") Gesendet.

Sie können den Startmodus für Ihren Anwendungspool auch auf Always Running Konfigurieren. Dies bedeutet, dass bei jedem Neustart von IIS] Ihr Anwendungspool sofort gestartet wird (dies, wenn Sie mit der rechten Maustaste klicken) in Ihrem Anwendungspool dann Advanced Settings

enter image description here

und Preload für Ihre Site selbst (Rechtsklick auf die Site, dann Manage Site und dann Advanced Settings

enter image description here

2. Deaktivieren Sie das Leerlaufzeitlimit

Zusätzlich können Sie idleTimeout deaktivieren (standardmäßig IIS fährt die App nach 20 Minuten Aktivität herunter), indem Sie das von in Idle Time-out Für Ihren Anwendungspool auf 0 (unendlich) ändern.

enter image description here

3. Deaktivieren Sie das regelmäßige Recycling

deaktivieren Sie außerdem standardmäßig Regular Time Interval (minutes) IIS würde Ihre App alle 29 Stunden recyceln.

enter image description here

For

55
ahmelsayed

Nach meiner Erfahrung wird AlwaysRunning und Preload nicht viel schneller. Die meiste Wartezeit wird für die dynamische Kompilierung (die mit der Aspx-Vorkompilierung behoben werden kann) und das Laden von Assemblys in den Speicher und das Caching benötigt.

1
zmikic