StudioSystem

Restart serwera RDP w usłudze SSJob

Automatyczny restart serwera terminali RDP o zadanej godzinie: dlaczego serwer tego wymaga, konfiguracja ServerResetHour i miejsce w sekwencji zadań utrzymaniowych.

studiosystem.softwarestudio.com.pl/transakcje/
Menu modułu Administrator w StudioSystem z pozycją Skorowidze
Menu modułu Administrator w StudioSystem z pozycją Skorowidze
W skrócie

Restart serwera RDP to zadanie cykliczne usługi SSJob, wykonujące pełny restart systemu operacyjnego serwera terminali o wcześniej ustalonej godzinie, wskazanej parametrem ServerResetHour. Ma sens wyłącznie jako element szerszej, skoordynowanej sekwencji zadań utrzymaniowych serwera RDP.

Czym jest restart serwera RDP

Restart serwera RDP to jedno z zadań SSJob dbających o infrastrukturę, na której działa StudioSystem - w tym przypadku o serwer terminali udostępniający zdalne sesje pulpitu wielu użytkownikom jednocześnie. W odróżnieniu od zadań opisanych wcześniej w tej serii, dotyczących bazy danych czy plików aplikacji, to zadanie oddziałuje bezpośrednio na cały system operacyjny serwera, na którym pracują aktywni użytkownicy.

Mechanizm konfiguracyjny pozostaje ten sam, co przy pozostałych zadaniach SSJob - wiersz w tabeli _jobs z harmonogramem i powiadomieniami - jednak sam efekt działania zadania jest znacznie bardziej odczuwalny dla użytkowników niż w przypadku zadań działających wyłącznie w tle, takich jak odbudowa indeksów czy organizacja bazy danych. O ile te dwa zadania użytkownik odczuwa co najwyżej pośrednio, poprzez szybkość działania zapytań, o tyle restart serwera terminali jest zdarzeniem widocznym wprost - kończy sesję każdego, kto akurat z niej korzysta, dlatego wymaga znacznie ostrożniejszego zaplanowania niż zadania działające całkowicie niezauważalnie w tle.

Dlaczego serwer terminali tego wymaga

Serwery terminali RDP, obsługujące jednocześnie wielu zalogowanych użytkowników przez długi czas bez przerwy, są szczególnie podatne na kilka typowych problemów systemu Windows. Procesy uruchamiane w ramach poszczególnych sesji użytkowników nie zawsze zwalniają zajętą pamięć w pełni poprawnie, co przy dziesiątkach czy setkach zalogowanych w ciągu dnia osób prowadzi do stopniowego wyczerpywania dostępnych zasobów serwera.

Dodatkowym źródłem problemów są sesje osierocone - pozostające formalnie aktywne w systemie mimo utraty rzeczywistego połączenia z komputerem klienckim, na przykład po nagłym zerwaniu sieci. Takie sesje wciąż zajmują pamięć i licencje dostępowe, mimo że nikt aktywnie z nich nie korzysta. Regularny, pełny restart systemu operacyjnego skutecznie usuwa wszystkie te narastające problemy naraz, przywracając serwer do stanu zbliżonego do świeżo uruchomionego.

Do tego dochodzą typowe dla długo działających systemów Windows zjawiska poboczne - rozrastające się pliki tymczasowe poszczególnych profili użytkowników, zawieszone procesy usług drukowania czy stopniowo zapełniający się bufor zdarzeń systemowych. Żaden z tych problemów z osobna zwykle nie jest krytyczny, ale ich suma, narastająca dzień po dniu bez żadnej interwencji, potrafi z czasem zauważalnie obniżyć responsywność całego serwera terminali, wydłużając czas logowania i ogólny czas reakcji aplikacji uruchamianych przez użytkowników.

Konfiguracja w tabeli _jobs

Zadanie restartu serwera RDP korzysta ze znanego zestawu pól tabeli _jobs, uzupełnionego o parametr właściwy wyłącznie temu typowi zadania:

PoleZnaczenie
OSTATNIOWYKONANOData ostatniego poprawnego wykonania zadania
CYKLICZNOSCLiczbowy interwał, co jaki zadanie jest uruchamiane
CYKLICZNOSCTYPEJednostka interwału - np. dni
MAILPOWIADOMIENIEAdresy e-mail, na które trafią powiadomienia o wykonaniu zadania
CONECTIONSTRINGNAMEŁańcuch połączeniowy wskazujący bazę danych StudioSystem
PARAMETRY (ServerResetHour)Godzina doby, o której ma nastąpić restart serwera

W odróżnieniu od zadań wskazujących nazwaną konfigurację w osobnej tabeli, tak jak eksport XLSX czy synchronizacja HelpDesk, parametr ServerResetHour jest tu jedyną, prostą wartością liczbową - godziną, bez potrzeby odwoływania się do dodatkowych struktur danych.

StudioSystem

Świeży serwer każdego dnia

Cykliczny restart serwera terminali eliminuje narastające przez dzień pracy problemy pamięci i osieroconych sesji.

Miejsce w sekwencji zadań RDP

Restart serwera RDP nie działa w oderwaniu od pozostałych zadań utrzymaniowych serwera terminali tej samej serii. Logicznie poprzedza go zadanie wylogowania użytkowników z serwera, a bezpośrednio po nim zwykle następuje zadanie czyszczenia serwera, porządkujące pozostałości po zakończonej sesji roboczej dnia.

Taka trójetapowa sekwencja - wylogowanie, restart, czyszczenie - pozwala przeprowadzić pełną, kontrolowaną konserwację serwera terminali w jednym nocnym oknie czasowym, bez ryzyka, że którykolwiek z etapów zaskoczy użytkownika wciąż aktywnie pracującego w systemie.

Rozdzielenie tej konserwacji na trzy osobne zadania SSJob, każde z własnym wierszem w tabeli _jobs i własnym, precyzyjnie ustawionym momentem uruchomienia, ma istotną zaletę względem jednego, monolitycznego skryptu wykonującego wszystko naraz - administrator może niezależnie zweryfikować powodzenie każdego etapu z osobna, a w razie potrzeby zmienić harmonogram tylko jednego z nich, bez ingerowania w pozostałe dwa.

Dobór godziny restartu

Parametr ServerResetHour powinien być dobrany tak, by przypadał wyraźnie poza godzinami pracy wszystkich użytkowników korzystających z serwera terminali, z odpowiednim zapasem czasowym na wcześniejsze wylogowanie sesji i późniejsze uruchomienie się wszystkich usług po restarcie, zanim pierwsi użytkownicy zaczną logować się rano.

W firmach działających na wiele zmian albo obsługujących użytkowników w różnych strefach czasowych dobór jednej wspólnej godziny bywa trudniejszy niż w typowej firmie pracującej wyłącznie w standardowych godzinach dziennych - podobny problem opisano już przy okazji harmonogramu odbudowy indeksów bazy danych.

W takich przypadkach warto rozważyć wybór godziny przypadającej na najkrótsze, wspólne dla wszystkich zmian okno ciszy operacyjnej - często będzie to środek nocy czasu lokalnego głównej siedziby firmy, nawet jeśli nie jest to idealne rozwiązanie dla każdej pojedynczej lokalizacji. Alternatywą, stosowaną w bardziej rozbudowanych wdrożeniach obejmujących wiele niezależnych serwerów terminali, jest przypisanie każdemu z nich osobnego wiersza w tabeli _jobs z własną, dopasowaną do lokalnej strefy czasowej wartością parametru ServerResetHour.

Ryzyka nieskoordynowanego restartu

Restart systemu operacyjnego bezwarunkowo kończy wszystkie aktywne sesje użytkowników, niezależnie od tego, czy w danym momencie ktoś faktycznie pracuje na serwerze, czy nie. Uruchomienie tego zadania bez wcześniejszego, kontrolowanego wylogowania użytkowników grozi utratą niezapisanej pracy każdej osoby, która akurat korzysta z serwera terminali w chwili restartu.

Z tego powodu zadanie to nigdy nie powinno działać w pełnej izolacji od pozostałych elementów sekwencji - jego bezpieczeństwo operacyjne zależy bezpośrednio od poprawnego skonfigurowania i przetestowania całego łańcucha zadań, a nie tylko samego restartu z osobna.

Praktyczną konsekwencją tej zależności jest to, że każda zmiana harmonogramu jednego z trzech zadań tej sekwencji powinna być weryfikowana pod kątem wpływu na pozostałe dwa. Przesunięcie godziny restartu bez odpowiedniego przesunięcia wcześniejszego wylogowania użytkowników odtwarza dokładnie to samo ryzyko utraty niezapisanej pracy, przed którym cała trójetapowa sekwencja miała pierwotnie chronić.

Dobre praktyki

Kilka zasad pomaga bezpiecznie utrzymać to zadanie niezależnie od skali wdrożenia:

  • Zachowanie kolejności zadań - restart powinien następować dopiero po zakończeniu zadania wylogowania użytkowników, nigdy przed nim ani równolegle.
  • Odpowiedni margines czasowy - między wylogowaniem a restartem oraz między restartem a startem pracy użytkowników warto zostawić bezpieczny zapas czasu.
  • Informowanie użytkowników z wyprzedzeniem - stały, dobrze znany wszystkim harmonogram restartu pozwala pracownikom samodzielnie zadbać o zapisanie pracy przed zamknięciem sesji.
  • Weryfikacja powiadomień - pole MAILPOWIADOMIENIE potwierdza, że restart faktycznie się wykonał zgodnie z ustalonym harmonogramem.

Warto też pamiętać, że sam restart nie rozwiązuje problemów wynikających z niedoboru zasobów sprzętowych serwera - jeśli wycieki pamięci czy przeciążenie procesora pojawiają się już w ciągu kilku godzin od restartu, a nie po całym dniu pracy, jest to sygnał, że problem wymaga głębszej diagnozy, a nie tylko coraz częstszych restartów. Częstsze restarty w takiej sytuacji jedynie maskują objaw, zamiast rozwiązywać jego rzeczywistą przyczynę, którą może być na przykład niedoszacowana ilość pamięci RAM w stosunku do liczby jednocześnie pracujących użytkowników.

Podsumowanie

Restart serwera RDP to proste w konfiguracji, ale odczuwalne w skutkach zadanie SSJob, przywracające serwer terminali do stanu wolnego od narosłych w ciągu dnia problemów pamięci i osieroconych sesji. Konfiguruje się je wierszem w tabeli _jobs z parametrem ServerResetHour wskazującym godzinę wykonania.

Pełne bezpieczeństwo tego zadania zapewnia dopiero jego właściwe miejsce w sekwencji z zadaniami wylogowania użytkowników i czyszczenia serwera, opisanymi osobno w kolejnych materiałach tej samej serii poświęconej utrzymaniu serwera terminali RDP. Traktowanie tych trzech zadań jako jednej, spójnej całości, a nie osobnych, niezależnych mechanizmów, jest kluczem do bezpiecznej i przewidywalnej konserwacji serwera terminali w każdym wdrożeniu StudioSystem.

Słownik pojęć

Podstawowe pojęcia - restart serwera RDP

Terminologia przydatna przy utrzymaniu serwera terminali.

RRestart serwera RDP
Zadanie SSJob wykonujące pełny restart systemu operacyjnego serwera terminali o zadanej godzinie.
SSerwer terminali RDP
Serwer Windows udostępniający zdalne sesje pulpitu wielu użytkownikom jednocześnie.
SServerResetHour
Parametr zadania określający godzinę, o której ma nastąpić automatyczny restart serwera.
WWyciek pamięci
Stopniowe zajmowanie pamięci serwera przez procesy, które nie zwalniają jej prawidłowo po zakończeniu pracy.
SSesja osierocona
Sesja użytkownika RDP pozostająca aktywna w systemie mimo braku rzeczywistego połączenia klienta.
TTabela _jobs
Tabela systemowa przechowująca konfigurację wszystkich automatycznych zadań usługi SSJob.
FAQ

Najczęściej zadawane pytania

01

Czym jest zadanie restartu serwera RDP w SSJob?

To zadanie cykliczne wykonujące pełny restart systemu operacyjnego serwera terminali o wcześniej ustalonej godzinie, niezależnie od pozostałych zadań SSJob.

02

Do czego służy parametr ServerResetHour?

Określa konkretną godzinę doby, o której zadanie ma zainicjować restart serwera - zwykle ustawianą w porze najmniejszego obciążenia użytkownikami.

03

Dlaczego serwer terminali RDP wymaga regularnego restartu?

Ze względu na wycieki pamięci, osierocone sesje i narastające obciążenie procesów systemowych, które kumulują się przy długotrwałej pracy wielu równoczesnych użytkowników.

04

Co dzieje się z aktywnymi sesjami podczas restartu?

Restart systemu operacyjnego kończy wszystkie aktywne sesje użytkowników, dlatego zadanie powinno być poprzedzone wcześniejszym wylogowaniem użytkowników z serwera.

05

Jak restart serwera RDP wiąże się z innymi zadaniami tej serii?

Tworzy sekwencję z zadaniami wylogowania użytkowników i czyszczenia serwera - restart ma sens dopiero po uprzednim, kontrolowanym zamknięciu aktywnych sesji.

06

Jak dowiedzieć się, że restart serwera się wykonał?

Pole OSTATNIOWYKONANO w tabeli _jobs pokazuje datę ostatniego poprawnego wykonania, a powiadomienie e-mail z pola MAILPOWIADOMIENIE potwierdza zakończenie zadania.

Warto przeczytać

Powiązane materiały o utrzymaniu serwera terminali

Kolejne kroki, jeśli zarządzasz serwerem RDP StudioSystem.

RDP

XIV. RDP czyszczenie serwera

Zadanie porządkujące pozostałości po zakończonej sesji roboczej, uruchamiane po restarcie serwera.

Czytaj dalej
Raporty

XI. Eksport XLSX

Zadanie SSJob generujące arkusz danych na podstawie nazwanej konfiguracji eksportu.

Czytaj dalej
Zgłoszenia

IX. HelpDesk Synchro

Zadanie SSJob importujące zgłoszenia serwisowe ze skonfigurowanej skrzynki pocztowej.

Czytaj dalej
Wydajność

III. Odbudowa indeksów

Zadanie utrzymaniowe przeciwdziałające fragmentacji indeksów bazy danych StudioSystem.

Czytaj dalej
SSJob

SSJob - automatyczne zadania

Pełny mechanizm usługi SSJob i tabeli _jobs, z przykładami innych typów zadań realizowanych tą samą usługą.

Czytaj dalej

Chcesz zobaczyć platformę w działaniu?

Uruchom demo modułów StudioSystem i sprawdź platformę na żywo.