Dlaczego proces roboczy IIS jest przetwarzany co 29 godzin, a nie co 24 godziny?

24

Podczas konfigurowania witryny w IIS domyślnie proces roboczy przetwarza się co 1740 minut (29 godzin). Dlaczego liczba nieparzysta jak 29 godzin, a nie na przykład 24 lub 48 godzin?

Chłopak
źródło

Odpowiedzi:

27

Na Tech Ed 2003 prezenterowi zadano to pytanie, a odpowiedź brzmiała, że ​​chcieli nieregularnego cyklu, aby zapobiec jego występowaniu na codziennych granicach (np. W celu odróżnienia od innych codziennych zadań zaplanowanych na serwerze / domenie).

Witryna tutaj (Link dead) spekulowała:

... (29) jest pierwszą liczbą pierwszą po 24, co pozwala jej mieć najmniejszą szansę na regularny wzorzec z dowolnym innym procesem serwera; ułatwienie dochodzenia w sprawie problemów

Pojawia się inna strona, aby to potwierdzić:

( Wade Hilmo ) zasugerował 29 godzin z tego prostego powodu, że jest to najmniejsza liczba pierwsza powyżej 24. Chciał mieć rozłożony i nie powtarzający się wzór, który nie występuje częściej niż raz dziennie

StuartLC
źródło
Ciekawy. Osobiście uważam, że codzienne powtarzanie się o tej samej porze ułatwiłoby śledzenie, czy recykling procesu roboczego powoduje inne problemy. np. wyśledzenie problemu, który zdarza się mniej więcej każdego dnia, jest trudne, ale łatwiej jest, jeśli zdarza się o 19:00 każdego dnia, ponieważ można przeszukiwać system w poszukiwaniu zdarzeń, które mają miejsce w tym czasie. Wiem, że możesz ustawić IIS na recykling, kiedy tylko chcesz lub wcale, ale większość pozostawia domyślną. Dziękuję za odpowiedź!
Guy
18

OK, to mnie wkurzyło, więc przekopałem się i w końcu znalazłem ten post od faceta, który najwyraźniej był w zespole IIS:

Powód, dla którego IIS6 domyślnie przetwarza co 29 godzin (i mieliśmy powód

Powodem, dla którego IIS6 jest przetwarzany domyślnie co 29 godzin (i mieliśmy powód, aby wybrać 29 godzin jako wartość domyślną) jest to, że bardziej prawdopodobne jest, że aplikacja internetowa działająca na nim jest zawodna i dosłownie musi się często restartować.

W związku z tym IIS6 opiera się na założeniu (co jest cyniczne), że aplikacja internetowa użytkownika nie będzie działać przez więcej niż 24 ciągłe godziny, odpowiednio zaplanowane funkcje i wybrane ustawienia domyślne. Procesy robocze są przetwarzane co 29 godzin, uruchamianie i zamykanie procesu jest monitorowane, proces jest stale pingowany, aby upewnić się, że jest uruchomiony, uchwyt procesu jest śledzony i sygnalizowany, gdy niespodziewanie kończy się itp.

Zdając sobie sprawę, że recykling jest normalną częścią operacji, IIS6 zapewnia również izolację takiego recyklingu od użytkownika końcowego - połączenie TCP użytkownika końcowego nigdy nie kończy się podczas recyklingu, z powodu pewnej magii trybu jądra. W połączeniu z aplikacją w trybie użytkownika, która przechowuje stan sesji poza procesem (np. ASP.Net Session State Service), można praktycznie zagwarantować niezawodny czas bez widocznej dla użytkownika utraty danych, nawet jeśli aplikacja internetowa ulegnie awarii po przetworzeniu każdego pojedynczego Żądanie użytkownika.

Jest to tak dobre, jak IIS6 może uczynić - biorąc pod uwagę niewiarygodną aplikację internetową, sprawiając, że wydaje się niezawodna dla użytkownika końcowego, i rób to bez konieczności poprawiania niewiarygodnej aplikacji internetowej.

Oczywiście nie wszystkie nierzetelne aplikacje mogą sprawiać wrażenie niezawodnych - jeśli tak, to wszyscy jesteśmy bez pracy! - ale IIS6 z pewnością stara się o wiele bardziej zachować odporność.

W twoim przypadku po prostu zdarza się, że sprężystość ma wpływ uboczny na nietrwały stan użytkownika, ale można go łatwo dostosować.

Zakładając, że twoja aplikacja internetowa nigdy nie ma problemu i pozostaje w stanie sesji procesowej, będziesz chciał zmienić te ustawienia domyślne: 1. Wyłącz 29-godzinny okresowy recykling 2. Wyłącz 20-minutowy limit czasu bezczynności

Zapobiegnie to nieoczekiwanej utracie stanu sesji.

Oczywiście, jeśli kiedykolwiek użyjesz aplikacji ze stanem sesji poza procesem, możesz pozostawić wszystko jako domyślne i nigdy nie zauważać różnicy w funkcjonalności lub niezawodności.

DOK
źródło
1
Czuję się głupio pytając o to, ale jeśli IIS zakłada, że ​​aplikacja internetowa nie dotrze do 24 godzin, to dlaczego 29 był dobrym wyborem? Czy nie powinni wybrać liczby poniżej 24? Gdzie mam rację interpretując to wyjaśnienie?
Alpha
Być może nie ma „najlepszej” odpowiedzi na wartość domyślną, a osoba zarządzająca witryną powinna podjąć świadomą decyzję w oparciu o aplikację i system.
DOK
@Alpha - Zgadzam się - to nie ma sensu - domyślnie powinno to być 22 lub 23 godziny lub przynajmniej coś niższego niż 24.
Guy
[potrzebne źródło]
piers7
Codziennie rano pojawia się dziwny błąd kompilacji części witryny, który można naprawić tylko za pomocą recyklingu. Domyślam się, że limit czasu bezczynności uruchamia się z dnia na dzień z powodu niskiego obciążenia iz jakiegoś powodu po ponownym uruchomieniu pojawia się błąd kompilacji. Dzięki za prowadzenie,
podążę