Ich entwickle Websites auf Basis der .NET-Plattform. Normalerweise stelle ich diese Sites auf meinem lokalen IIS bereit, damit ich sie testen und ihre Funktionalität überprüfen kann, bevor sie live geschaltet werden. Bei jedem Neustart von Windows scheint es jedoch sehr lange zu dauern, bis Websites zum ersten Mal ausgeführt werden.
Ich kenne JIT und bin mir auch dieser Frage bewusst , aber sie beantwortet meine Frage nicht.
Passiert JIT bei jedem Neustart von Windows? Steht es im Zusammenhang mit der Erstellung des Prozesses w3wp.exe? Warum sind Websites für die erste Anforderung nach jedem Neustart so langsam?
Antworten:
Dieses Problem ist die JIT-Kompilierung. Der Anwendungspool benötigt Zeit, um die Bibliotheken zu erstellen, bevor er sie verarbeiten kann. Dies kann mithilfe eines Aufwärmskripts beschleunigt werden, dies muss jedoch geschehen. Dies hängt auch davon ab, ob Sie eine Website oder ein Webanwendungsprojekt verwenden. Eine Website ist JIT für jede Seite, so dass der erste Treffer langsam ist und jeder neue Seitenzugriff auch eine zusätzliche Kompilierungszeit hat. Webanwendungsprojekte sind vorkompiliert, daher sollte dieser Treffer nicht so schlimm sein, aber die Bibliotheken müssen noch geladen werden. Je mehr Bibliotheken / Tools Sie haben, desto schlimmer wird dieser Treffer. Hier sind einige Links, die sich mit dem Aufwärmen befassen:
http://weblogs.asp.net/gunnarpeipman/archive/2010/01/22/iis-application-warm-up-module.aspx http://blogs.iis.net/steveschofield/archive/2009/05/30 /application-pool-warm-up.aspx https://stackoverflow.com/questions/2063461/iis-web-applications-warmup http://sharepoint.smayes.com/2011/06/application-pool-specific-warm -up-Skripte /
quelle
Die langsame Reaktion auf Ihre erste Anforderung ist, dass IIS eine Site oder einen Anwendungspool nur bei der ersten eingehenden Anforderung startet / lädt. Nach einer festgelegten Zeitspanne wird die Site von IIS nicht mehr angehalten, wenn neue eingehende Anforderungen eingehen (Recycling des App-Pools).
ASP.NET 4.0 verfügt über eine neue Funktion, die als Autostart bezeichnet wird. Mit dieser Funktion können Sie einen Anwendungspool oder eine einzelne Site so einrichten, dass sie sich selbst startet, bevor Anforderungen gestellt werden. Dies wird beim Start (beim Starten von IIS) oder beim Aktualisieren einer ASP.NET-Site (die die Site anhält) ausgelöst.
Sie benötigen dazu IIS 7.5.
Es gibt auch eine Option, um bestimmte zusätzliche Aufgaben auszuführen, wenn der Autostart einsetzt, z. um Daten in den Cache vorzuladen.
quelle
Ein Teil des Problems ist auch der GAC. Die Bibliotheken müssen dort bei jedem Laden auf ihre Sicherheit überprüft werden - das bedeutet, dass eine ganze Reihe von Verschlüsselungsaufgaben ausgeführt werden, was die Arbeit erheblich verlangsamt. Vor einiger Zeit gab es einen Vortrag über die WPF-Leistung von MS, in dem dieses Problem beschrieben wurde. Die Antwort lautete: "Gib nichts in das GAC, wenn du nichts dagegen tun kannst."
quelle
IIS hat eine (manchmal) ärgerliche Funktion für Websites mit geringem Datenverkehr. Nicht verwendete Arbeitsprozesse werden recycelt, wodurch der erste Benutzer zur Site gelangt. manchmal extrem lange Verzögerung (30+ Sekunden). http://dotnettimes.wordpress.com/2014/03/24/fixing-slow-initial-load-for-iis-web-site/
quelle