Pule aplikacji IIS-Stop/Start vs Recycle

Zauważyłem, że w jednej z moich aplikacji internetowych, gdy ręcznie przetwarzam pulę aplikacji, proces przetwarzania workera może trwać ponad 60 sekund, aby zostać całkowicie zniszczony, na podstawie oglądania go w Menedżerze Zadań. Jeśli jednak całkowicie zatrzymam pulę aplikacji, proces worker zniknie niemal natychmiast - w ciągu 1-2 sekund.

Więc moje pytanie jest dwojakie:

A) dlaczego tak długo trwa niszczenie procesu (i to bardziej sensownie, uwolnij zasoby używane/zablokowane przez niego), gdy pula aplikacji zostanie poddana recyklingowi zamiast zatrzymana; oraz

B) zakładając, że zatrzymałem ruch przed skierowaniem do serwera, czy jest jakiś powód, aby nie zatrzymywać / uruchamiać zamiast recyklingu?


Edit:
Aby wyjaśnić, zanim poddam recyklingowi lub zatrzymam pulę aplikacji, Zatrzymuję ruch wysyłany do danego serwera (serwer znajduje się w klastrze load balancer i usuwam serwer z Load balancer). Więc w teoria, nie powinno być żadnych wniosków przybywających na stronę internetową w czasie robię coś do puli aplikacji.


Edytuj Część:
Po przeczytaniu linku Igala wydaje mi się dość oczywiste co się dzieje. Kiedy przetwarzam pulę aplikacji, nowy Proces jest uruchamiany, ale ponieważ nie ma ruchu w ogóle, nie rejestruje nowego procesu jako funkcjonującego, więc nie wyłącza starego aż do limitu czasu (który wynosi 90 sekund).

Z tą wiedzą, to jasne dla mnie, że funkcja "Recycle" jest specjalnie przeznaczona do użycia w połowie strumienia na serwerze na żywo, a ponieważ jestem ręcznie opróżniania ruchu wcześniej, powinienem użyć stop/start zamiast.

Author: ColdFire, 2008-12-24

3 answers

A) Z Powodu nakładania się recyklingu . Istnieje okres, w którym "stary" proces czeka na rozpoczęcie nowego.

B) Nie. Z tego co wiem.

 31
Author: Igal Serban,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-24 17:54:21

A recycle jeśli dobrze pamiętam, pozwoli na zakończenie wszystkich istniejących żądań, to odzyska pulę aplikacji. Przystanek po prostu kończy go dokładnie w momencie, w którym go zatrzymasz.

 15
Author: Mitchel Sellers,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-12-24 17:52:09

Zgodnie z ten link ,

Zatrzymanie – zatrzymując pulę aplikacji, nakazujesz zamknięcie wszystkich procesów pracowniczych usługi IIS obsługujących tę pulę aplikacji, i zapobiec uruchomieniu dodatkowych procesów pracowniczych, aż do pula aplikacji zostanie uruchomiona ponownie. to inicjuje pełen wdzięku zamykanie procesów roboczych, przy czym każdy proces roboczy próbuje aby wyssać wszystkie żądania, a następnie wyjść.

Jeśli pracownik proces nie kończy się w określonym czasie przez właściwość konfiguracyjną shutdowntimelimit w processModel element definicji każdej puli aplikacji (domyślnie: 90 sec), był zakończy go na siłę (nie dzieje się tak, jeśli natywny debugger jest dołączony).

Dlatego zatrzymanie puli aplikacji jest działaniem zakłócającym, które powoduje rozładowanie ASP.NET domeny aplikacji, procesy potomne FastCGI, i utrata dowolnego stanu aplikacji w trakcie procesu.

Recycling – recykling puli aplikacji powoduje, że wszystkie aktualnie uruchomione procesy robocze IIS w tej puli aplikacji są wdzięcznie zamykania, ale w przeciwieństwie do zatrzymywania puli, nowe procesy pracownicze IIS mogą być uruchamiane na żądanie w celu obsługi kolejnych żądań.

Recykling puli aplikacji jest dobrym sposobem na spowodowanie resetowania stan aplikacji i dowolna konfiguracja buforowana przez pracownika usługi IIS procesy, które nie są automatycznie odświeżane (głównie globalne klucze rejestru), bez zakłócania działania serwera. To sprawia, że recykling puli aplikacji jest doskonałą alternatywą dla W większości przypadków jestem ustawiony.

 5
Author: natenho,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-28 17:54:46