Jak mogę rozgrzać moją aplikację asp.net mvc po recyklingu puli aplikacji?

23

Korzystam z aplikacji internetowej ASP.NET MVC w IIS 8.0. Moja aplikacja musi zostać rozgrzana przed przyjęciem wniosków. Mamy już proces automatycznego rozgrzewania aplikacji po wdrożeniu nowego kodu. Widzimy jednak okresowe zdarzenia recyklingu puli aplikacji, które powodują, że aplikacja się nie rozgrzewa.

Czy istnieje najlepsza praktyka wykrywania zdarzenia recyklingu puli aplikacji i wykonania skryptu lub kodu?

AgileJon
źródło

Odpowiedzi:

55

Istnieje kilka rzeczy, które możesz zrobić:

1. Inicjalizacja aplikacji

Możesz użyć modułu inicjalizacji aplikacji, który jest dostarczany z IIS 8.0

możesz mieć coś takiego w swoim web.config

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

Spowoduje to wysłanie żądania do katalogu głównego aplikacji ( initializationPage="/") za każdym razem, gdy aplikacja uruchomi się automatycznie.

Możesz także skonfigurować tryb startowy dla swojej puli aplikacji, Always Runningco oznacza, że ​​za każdym razem, gdy IIS uruchomi się ponownie, upewni się, że pulę aplikacji uruchomisz natychmiast (to jest po kliknięciu puli aplikacji prawym przyciskiem myszy, a następnieAdvanced Settings

wprowadź opis zdjęcia tutaj

i Preloaddla samego (miejscu prawym przyciskiem myszy na stronie to Manage SitewtedyAdvanced Settings

wprowadź opis zdjęcia tutaj

2. Wyłącz limit czasu bezczynności

Dodatkowo możesz wyłączyć idleTimeout (domyślnie IIS zamknie aplikację po 20 minutach aktywności), zmieniając wartość in Idle Time-outdla puli aplikacji na 0 (nieskończona)

wprowadź opis zdjęcia tutaj

3. Wyłącz okresowe recykling

również Regular Time Interval (minutes)domyślnie wyłączone IIS ponownie przetworzy aplikację co 29 godzin.

wprowadź opis zdjęcia tutaj

Dla

powiedziałem
źródło
3
Będziemy wdzięczni za komentarze na temat wad tych ustawień. Z pewnością istnieje powód, dla którego nie są domyślni.
user42134
2
Jasne, wysokie zużycie pamięci, jeśli uruchamiasz wiele witryn na tym samym urządzeniu IIS, ponieważ wszystkie strony pozostają aktywne przez cały czas, co prowadzi do bardzo niskiej gęstości witryn. Brak ochrony przed wyciekiem pamięci w aplikacjach. Należy pamiętać, że usługi IIS były dostępne, zanim języki zarządzane stały się popularne w Internecie, a wiele aplikacji uruchomiło natywne programy obsługi, które dostały się do wycieków pamięci i dziwnego stanu, jeśli pozostawały uruchomione przez długi czas. Zrobiono to, aby pomóc administratorom systemów, którzy musieli obudzić się w środku nocy, aby zresetować serwery z powodu problemów z aplikacją. Nadal są niespłacane, głównie ze względu na wsteczną porównywalność
powiedział Ahmelsay
1
Alternatywy w IIS 7.5 - Windows Server 2008 R2 ?
Kiquenet,
2
Możesz uzyskać moduł inicjalizacji aplikacji dla IIS 7.5 dla nr 1 do działania. # 2 i # 3 obowiązują w
obecnej wersji
1
Informacje dla osób korzystających z tego: applicationInitializationidzie do<configuration><system.webServer>
Paul
1

Z mojego doświadczenia, AlwaysRunning i Preload włączone nie przyspieszają zbytnio. Największym czasem oczekiwania jest kompilacja dynamiczna (którą można naprawić za pomocą prekompilacji aspx) oraz ładowanie zestawów do pamięci i buforowanie.

zmikic
źródło