IIS: Idle Timeout vs Recycle

97

W usługach IIS istnieją dwa obszary (no cóż, więcej niż dwa), w których może wystąpić recykling:

  1. W sekcji „Model procesu” → „Limit czasu bezczynności” (domyślnie 20 minut)

i

  1. W sekcji „Recykling” → „Regularny przedział czasu” (domyślnie 1740 minut)

Moje pytania to:

  1. Jakie są różnice między tymi dwiema metodami?
  2. Jakie są negatywne konsekwencje ustawienia ich na 0?
Ricky
źródło

Odpowiedzi:

97

Limit czasu bezczynności oznacza, że ​​jeśli żadna akcja nie została poproszona z Twojej aplikacji internetowej, proces spadnie i zwolni wszystko z pamięci

Recykling to wymuszone działanie w aplikacji, w którym przetwarzanie jest zamykane i uruchamiane ponownie, w celu wycieku pamięci i kondycji systemu

Negatywnym skutkiem obu jest zwykle utrata stanu sesji i aplikacji, jeśli zadzierasz z Recycle w szybszym czasie. (Zalogowani użytkownicy itp. Zostaną wylogowani, jeśli mają zamiar „sprawdzić”, wszystko byłoby zagubione "dlatego recykling ma tak dużą wartość czasu, limit czasu bezczynności nie ma znaczenia, ponieważ i tak nikt nie jest zalogowany i nie ma żadnej akcji, że 20 minut nadal nie robi zakupów"

Pozytywnym efektem byłoby pozbycie się czasu bezczynności, ponieważ Twoja witryna będzie reagować szybciej na swoją „pierwszą” odpowiedź, jeśli nie jest to bardzo aktywna witryna, w której użytkownik musiałby czekać na jej załadowanie, jeśli masz 1 użytkownika na 20 minut. mówić. Tak więc witryna, która otrzymuje mniej niż 1 raz na 20 minut, w rzeczywistości chciałbyś zwiększyć tę wartość, ponieważ strona internetowa musi ładować się od nowa dla każdego użytkownika. ale jeśli ustawisz tę wartość na 0 przez długi czas, wszelkie wycieki pamięci w kodzie mogą przez pewien czas całkowicie przejąć serwer.

MichaelEvanchik
źródło
Dzięki! To ma sens. Moim głównym dylematem jest to, że „pierwsze ładowanie” trwa bardzo długo. Pomyślałem, że jeśli ustawię oba na 0, to mogę to obejść. Jednak problem wycieku pamięci jest problemem. Czy istnieje sposób na „ponowne wykorzystanie”, a następnie „wymuszenie” żądania, tak aby „pierwszy dostęp” został zakończony i zakończony natychmiast po ponownym przetworzeniu? A może zaplanuj recykling o 2 w nocy, a następnie zaplanuj „pierwszy dostęp” o 2:30? Czy istnieje sposób, aby to zrobić w usługach IIS?
Ricky
@Ricky Miałem też problem z pierwszym trafieniem-trwa-wieki. Musisz ustawić startMode puli aplikacji na AlwaysRunning: msdn.microsoft.com/en-us/library/ee677285%28v=azure.10%29.aspx
Steve Hibbert
To też mi się przydało
Steve Hibbert
3
@Silvermind - Jeśli sesja jest przechowywana w procesie, nie zostanie skopiowana po odtworzeniu. Zobacz tutaj .
BornToCode
31

Od tutaj :

Jednym ze sposobów oszczędzania zasobów systemowych jest skonfigurowanie ustawień limitu czasu bezczynności dla procesów roboczych w puli aplikacji. Po skonfigurowaniu tych ustawień proces roboczy zostanie zamknięty po określonym czasie bezczynności. Domyślna wartość limitu czasu bezczynności to 20 minut.

Sprawdź również, dlaczego domyślny cykl odtwarzania puli aplikacji usług IIS jest ustawiony na 1740 minut?

Jeśli masz tylko kilka witryn na serwerze i chcesz, aby zawsze ładowały się szybko, ustaw to na zero. W przeciwnym razie, gdy masz 20 minut bez ruchu, pula aplikacji zostanie zamknięta, aby można ją było uruchomić ponownie podczas następnej wizyty. Problem polega na tym, że pierwsza wizyta w puli aplikacji musi utworzyć nowy proces roboczy w3wp.exe, który jest powolny, ponieważ trzeba utworzyć pulę aplikacji, należy załadować ASP.NET lub inną strukturę, a następnie aplikacja musi być załadowanym. To może zająć kilka sekund. Dlatego przy każdej okazji ustawiam to na 0, chyba że jest to serwer, który obsługuje wiele witryn, które nie zawsze muszą być uruchomione.

Rahul Tripathi
źródło
6

IIS ma teraz

Idle Time-out Action : Suspend oprawa

Zawieszanie po prostu zamraża proces i jest znacznie bardziej wydajne niż jego niszczenie.

nPcomp
źródło
0

Odziedziczyłem aplikację komputerową, która wywołuje szereg usług sieci Web w usługach IIS. Usługi sieciowe (również) muszą mieć możliwość niezależnego uruchamiania procesów czasowych (bez włączonego klienta). Dlatego wszyscy mają zegary. Zegary usługi sieciowej wyłączały się (wyciek pamięci?), Więc ustawiliśmy limit czasu bezczynności na 0, a liczniki czasu pozostały włączone.

DaniDev
źródło