Erste Anfrage nach einer Weile immer langsam - ASP.NET MVC / IIS 8.5 / Windows Server 2012 R2 VPS

11

Ich hoste eine verkehrsarme ASP.NET MVC 5-Anwendung auf einem VPS mit Windows Server 2012 R2 / IIS 8.5 mit 1 GB RAM.

Mein Problem ist, dass die erste Anfrage nach einiger Zeit ohne Anfragen immer langsam beantwortet wird - laut Chrome Dev Tools etwa 1,5 Sekunden . Nachfolgende Aktualisierungsanforderungen / -antworten dauern nur etwa 45 ms .

Ich habe bereits festgelegt Startmodus auf dem Anwendungspool zu AlwaysRunning und Preload Aktiviert auf True auf der Website - Ebene, aber es hatte absolut keine Wirkung . Selbst wenn es nach einiger Zeit keinerlei Änderungen / Uploads gibt, dauert es nach einiger Zeit 1,5 Sekunden, bis eine Antwort eingeht.

michalstanko
quelle

Antworten:

8

Das Problem ist, dass Sie die IIS-Funktion installieren müssen Application Initialization. Dann sollte es mit Ihrer Konfiguration funktionieren.

Das Bild stammt aus Rick Strahls Blog :

IIS-Funktion

Denken Sie auch daran, Folgendes einzustellen:

  • Starten Sie den Modus für AlwaysRunning im Anwendungspool
  • Preload Enabled to True auf Website-Ebene

Sie können diese Einstellungen festlegen, ohne dass das Anwendungsinitialisierungsmodul installiert ist. Sie haben jedoch keine Auswirkungen.

Weitere Informationen hier .

Christian Gollhardt
quelle
0

Gibt es möglicherweise eine Versionsinkongruenz zwischen der .NET Framework-Version, auf die Ihre Website abzielt, und der auf dem Webserver installierten .NET Framework-Laufzeitversion?

Und stellen Sie eine Website bereit, die nicht vorkompiliert und / oder aktualisierbar ist? - -

Erweiterte Precompile-Einstellungen

Upgrades der .NET Runtime-Version sollen in hohem Maße abwärtskompatibel sein. Bei der Migration mehrerer Websites, die auf das .NET 4.5.1 Framework abzielen, trat jedoch ein sehr ähnliches Problem von einem Windows Server 2008 R2-Server auf einen Windows Server 2012 R2-Server auf, der auf die .NET 4.6-Laufzeit gepatcht wurde. Alle meine ersten Seitenladevorgänge (auf mehreren Websites) dauerten für jede einzelne Seite zwei Minuten anstatt für den Bruchteil einer Sekunde. Alle meine Experimente mit verschiedenen IIS-Einstellungen waren bei der Lösung des Problems nicht erfolgreich.

Letztendlich konnte ich das Problem auf zwei Arten lösen:

  1. Durch die vollständige Neuerstellung des auf die .NET 4.5-Laufzeit gepatchten Servers wurde mein Problem behoben (zusammen mit dem Hinzufügen einer Registrierungseinstellung zum Blockieren der Installation von .NET 4.6.1 ).
  2. Alternativ konnte mein Problem auch durch erneutes Bereitstellen meiner Websites mit aktiviertem Kontrollkästchen "Vorkompilieren" und deaktiviertem Kontrollkästchen "Aktualisierbar zulassen" behoben werden.

Im Gegensatz dazu haben alle meine Versuche, die .NET Runtime-Version auf dem Server auf die .NET 4.5-Laufzeit zurückzusetzen oder zu reparieren , meine Probleme beim Laden der Seite nicht behoben. (Es gibt im Wesentlichen keinen sauberen und zuverlässigen Prozess, um eine .NET-Laufzeit vollständig zurückzusetzen, ohne den Server erneut abzubilden.)

Mac
quelle