Recykling
Recykling to zwykle * miejsce, w którym IIS uruchamia nowy proces jako kontener dla aplikacji, a następnie oddaje stary do ShutdownTimeLimit, aby odszedł z własnej woli, zanim zostanie zabity.
* - zwykle: patrz ustawienie DisallowOverlappingRotation / „Wyłącz nakładające się przetwarzanie”
Jest destrukcyjny , ponieważ pierwotny proces i wszystkie informacje o jego stanie są odrzucane. Użycie stanu sesji poza procesem (np. Serwer stanu lub baza danych, a nawet plik cookie, jeśli stan jest niewielki) może pozwolić na obejście tego.
Ale domyślnie się nakłada - co oznacza, że czas trwania awarii jest minimalizowany, ponieważ nowy proces rozpoczyna się i jest podłączony do kolejki żądań, zanim poprzedni zostanie poinformowany: „masz jeszcze [ShutdownTimeLimit] sekund na odejście. Przestrzegaj”.
Ustawienia
Na twoje pytanie: wszystkie ustawienia na tej stronie w jakiś sposób kontrolują recykling. „Wyłączenie” można opisać jako „proaktywny recykling” - gdy sam proces decyduje, że nadszedł czas, i kończy się w uporządkowany sposób.
Recykling reaktywny polega na tym, że WAS wykrywa problem i uruchamia proces (po ustaleniu odpowiedniego zastępczego W3WP).
Oto kilka rzeczy, które mogą spowodować recykling jednej lub innej formy:
- ISAPI decydujący, że jest niezdrowy
- awaria dowolnego modułu
- limit czasu bezczynności
- ograniczenie procesora
- dostosowywanie właściwości puli aplikacji
- ponieważ mama w pewnym momencie mogła krzyczeć: „Przestań się na to zbierać, bo inaczej nie będzie lepiej!”
- błąd „ping” * nie pinguje sam w sobie, ponieważ używa nazwanego potoku - więcej „detekcji życia”
- wszystkie ustawienia na zrzucie ekranu powyżej
Co robić:
Ogólnie:
Wyłącz limity czasu bezczynności . 20 minut bezczynności = bum! Nowy proces przy następnym przychodzącym żądaniu. Ustaw to na zero.
Wyłącz regularny przedział czasu - domyślnie 29 godzin zostało opisane przez różne strony jako „szalone”, „denerwujące” i „sprytne”. W rzeczywistości tylko dwa z nich są prawdziwe.
Opcjonalnie włącz DisallowRotationOnConfigChange (powyżej, Wyłącz recykling dla zmian konfiguracji ), jeśli po prostu nie możesz przestać się nim bawić - pozwala to zmienić dowolne ustawienie puli aplikacji bez natychmiastowego sygnalizowania procesom roboczym, że należy go zabić. Aby ręcznie zastosować ustawienia, musisz ręcznie ponownie przetworzyć pulę aplikacji, co pozwala wstępnie skonfigurować ustawienia, a następnie użyć okna zmian, aby zastosować je w procesie recyklingu.
Zgodnie z ogólną zasadą pozostaw pingowanie włączone . To twoja siatka bezpieczeństwa. Widziałem, jak ludzie to wyłączają, a potem witryna czasami zawiesza się, co prowadzi do paniki ... więc jeśli ustawienia są zbyt agresywne dla twojej pozornie bardzo, bardzo wolno reagującej aplikacji, cofnij je trochę i zobacz, co dostajesz, zamiast go wyłączać. (Chyba że masz skonfigurowane automatyczne zawieszanie trybu zawieszania dla zawieszonych W3WP poprzez własny proces monitorowania)
To wystarczy, aby dobrze zachowany proces trwał wiecznie. Jeśli umrze, na pewno zostanie zastąpiony. Jeśli to wisi, należy podnieść, że pingowanie się a nowy powinny rozpocząć się w ciągu 2 minut (domyślnie najgorszy oblicz powinno być: do częstotliwości ping + ping Timeout + terminie startowego przed wnioski znów zacznie działać).
Ograniczanie procesora zwykle nie jest interesujące, ponieważ domyślnie jest wyłączone, a ponadto jest skonfigurowane tak, aby nic nie robić; gdyby był skonfigurowany do zabicia procesu, to z pewnością byłby to wyzwalacz recyklingu. Zostaw to. Uwaga dla IIS 8.x, Ograniczanie procesora również staje się opcją.
AppPool (IIS) nie jest aplikacją (.Net) AppDomain (ale może zawierać jedną / kilka)
Ale ... wtedy wchodzimy do ziemi .Net i recyklingu AppDomain, co może również powodować utratę stanu. (Zobacz: https://blogs.msdn.microsoft.com/tess/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles/ )
Krótka wersja, robisz to, dotykając pliku web.config w folderze zawartości (ponownie przy pobieraniu!), Lub tworząc folder w tym folderze, plik ASPX lub ... inne rzeczy ... i to o tak destrukcyjne, jak recykling puli aplikacji, pomniejszony o koszty uruchamiania kodu natywnego (jest to koncepcja kodu zarządzanego (.Net), więc dzieje się tu tylko kod zarządzany).
Program antywirusowy może to również uruchomić, skanując pliki web.config, powodując powiadomienie o zmianie, powodując ...