Tworzę strony w oparciu o platformę .NET. Zazwyczaj wdrażam te witryny w lokalnych usługach IIS, aby móc je przetestować i sprawdzić ich funkcjonalność przed uruchomieniem. Jednak za każdym razem, gdy ponownie uruchamiam system Windows, wydaje się, że uruchamianie witryn po raz pierwszy zajmuje dużo czasu.
Wiem o JIT i jestem również świadomy tego pytania , ale to nie odpowiada na moje pytanie.
Czy JIT występuje przy każdym ponownym uruchomieniu systemu Windows? Czy to jest związane z tworzeniem procesu w3wp.exe? Dlaczego witryny są tak wolne w przypadku pierwszego żądania po każdym ponownym uruchomieniu?
Odpowiedzi:
Ten problem dotyczy kompilacji JIT. Pula aplikacji potrzebuje czasu na zbudowanie bibliotek, zanim zacznie je przetwarzać. Można to przyspieszyć za pomocą skryptu rozgrzewającego, ale to coś, co musi się wydarzyć. Zależy to również od tego, czy korzystasz ze strony internetowej, czy projektu aplikacji internetowej. Witryna jest JIT dla każdej strony, więc pierwsze trafienie jest powolne, a każde nowe trafienie strony również ma dodatkowy czas kompilacji. Projekty aplikacji internetowych są wstępnie skompilowane, więc nie powinno to być tak dotkliwe, ale biblioteki nadal muszą zostać załadowane. Im więcej bibliotek / narzędzi, tym gorsze jest to trafienie. Oto kilka linków omawiających rozgrzewkę:
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 /programming/2063461/iis-web-applications-warmup http://sharepoint.smayes.com/2011/06/application-pool-specific-warm -up-scripts /
źródło
Powolna reakcja na twoje pierwsze żądanie polega na tym, że IIS uruchamia / ładuje witrynę lub pulę aplikacji tylko przy pierwszym żądaniu przychodzącym. Po upływie określonego czasu żadne nowe przychodzące żądania nie przychodzą na serwer IIS ponownie zatrzymuje witrynę (recykling puli aplikacji).
ASP.NET 4.0 ma nową funkcję o nazwie auto-start. Dzięki tej funkcji możesz ustawić pulę aplikacji lub indywidualną witrynę, aby uruchamiała się przed żądaniami. Jest to uruchamiane podczas uruchamiania (podczas uruchamiania IIS) lub podczas aktualizacji witryny ASP.NET (która zatrzymuje witrynę).
Aby go użyć, potrzebujesz IIS 7.5.
Istnieje również opcja wykonania pewnych dodatkowych zadań, gdy rozpocznie się automatyczne uruchamianie, np. aby wstępnie załadować dane do pamięci podręcznej.
źródło
Częścią problemu jest także GAC. Biblioteki tam, gdzie są, będą musiały być sprawdzane pod kątem bezpieczeństwa za każdym razem, gdy są ładowane - to oznacza, że cały ładunek wykonywanego rodzaju szyfrowania jest wykonywany, a to znacznie spowalnia. Jakiś czas temu rozmawiano o wydajności WPF z MS, która opisywała ten problem - ich odpowiedź brzmiała: „nie wkładaj rzeczy do GAC, jeśli nie możesz na to poradzić”
źródło
Usługi IIS mają irytującą (czasem) funkcję witryn o niskim natężeniu ruchu. Przetwarza nieużywane procesy robocze - które powodują, że pierwszy użytkownik odwiedza witrynę; czasami bardzo duże opóźnienie (ponad 30 sekund). http://dotnettimes.wordpress.com/2014/03/24/fixing-slow-initial-load-for-iis-web-site/
źródło