Wykorzystanie pamięci systemu Windows 2012 Core Extreme w usłudze SVCHOST / Workstation

9

Mamy około 200 serwerów, Hyper V, klaster plików i IIS, z których każdy ma ten sam problem, zdarzenie występuje na serwerze podczas normalnego użytkowania, które maksymalnie zwiększa lub prawie maksymalizuje pamięć RAM na serwerze. Kiedy to się stanie, usługa SVCHOST / Workstation, w szczególności (wyeliminowana przez izolację usługi Workstation do jej własnego SVCHOST) przestaje zwalniać uchwyty / wątki, a pamięć używana przez tę usługę nigdy nie jest zwalniana. W niektórych ekstremalnych przypadkach mamy usługi stacji roboczej, które zużywają aż 40 GB pamięci RAM na serwerze 255 GB. W niektórych przypadkach znajduje się także ponad 40 milionów uchwytów.

Po ponownym uruchomieniu problem oczywiście znika i nie pojawia się ponownie, dopóki cała pamięć nie zostanie wykorzystana, powiedzmy przez proces W3 lub maszyny wirtualne HyperV, po czym usługa stacji roboczej zaczyna pobierać całą pamięć RAM. Proces ten jest bardzo powolny i może potrwać tygodnie / miesiące w zależności od ilości pamięci RAM na serwerze.

Zarówno nasze serwery Hyper V, jak i serwery IIS uzyskują dostęp do udziałów dla działających plików, udziały te znajdują się w pamięci SSD, więc są bardzo wydajne. Zainstalowaliśmy wszystkie obecne łatki, ale nie przenieśliśmy się do R2, ponieważ mamy wiele narzędzi, które sprawią, że będzie to znaczący krok i nie znajdzie żadnego wyraźnego wskazania, że ​​zostanie to naprawione w R2.

Uruchomiliśmy ProcMon i inne narzędzia, ale na najbardziej problematycznych serwerach te narzędzia nawet nie działają. Z drugiej strony przedstawione przez nich wyniki pokazują po prostu, że w tym procesie rzeczywiście występuje wyciek pamięci.

Czy istnieje sposób na zwolnienie pamięci z tego procesu lub całkowite uniknięcie błędu? Nie chcemy ponownie uruchamiać komputera i nie możemy ponownie uruchomić procesu, gdy jest w stanie błędu. Proces zostaje zamrożony.

Staramy się unikać regularnych restartów, aby „naprawić” ten problem, więc wszelkie odpowiedzi będą mile widziane.

Craig
źródło
Jakie jest Twoje pytanie?
Andrew Schulman
Rzeczywiście tak jest, ale w najlepszym razie jest to dwuznaczne, otwierają się tylko tysiące / miliony wątków. Na najbardziej problematycznych systemach nie możemy nawet uruchomić tych narzędzi, po prostu psują serwer.
Craig
Chcemy znaleźć dobre rozwiązanie, aby rozwiązać problem inny niż ponowne uruchomienie urządzenia. Nie możemy zatrzymać usług po uruchomieniu tego problemu.
Craig
Czy zainstalowano KB 2811660? Czy na tych systemach działa menedżer serwerów? support.microsoft.com/kb/2793908
Tak, ten KB został zainstalowany jakiś czas temu. Również ten wyciek jest specyficzny dla usługi Workstation, że KB stosuje się do usługi WMI.
Craig

Odpowiedzi:

1

Miałem niesamowicie podobny problem, gdy svchost niszczył wydajność serwera.

Rozwiązanie: Okazuje się, że miałem pełny dziennik zdarzeń. Wyczyściłem to i wszystko wróciło do normy, jak gdyby nigdy nic.

(Polecam również zmianę rozmiaru dziennika zdarzeń z domyślnego, patrz poniżej)

Aby ustawić maksymalny rozmiar dziennika za pomocą interfejsu systemu Windows
- Uruchom Podgląd zdarzeń.
- W drzewie konsoli przejdź do dziennika zdarzeń, którym chcesz zarządzać, i wybierz go.
- W menu Akcja kliknij polecenie Właściwości.
- W polu Maksymalny rozmiar dziennika (KB) użyj pokrętła, aby ustawić żądaną wartość, i kliknij OK.

Brzmi dokładnie tak, jak tu się dzieje, ale okazało się, że jest to naprawdę łatwa naprawa. Ponowne uruchomienie tymczasowo rozwiązałoby problem, ale gdy tylko cokolwiek spróbowało zapisać w dzienniku, wszystko wymknęło się spod kontroli i po prostu pochłaniało zasoby.

Mam nadzieję że to pomoże!

Aelof
źródło
-1
>Is there a way we can free up the memory from this process ?

Nie ma możliwości, aby zewnętrznie (poprawnie) zwolnić przydzieloną pamięć lub obsłużyć zasoby bez zabijania niewłaściwej aplikacji.

>or avoid the bug all together? 

Występuje wyciek pamięci i zasobów. Jedynym sposobem rozwiązania problemu jest znalezienie wycieku i uniknięcie jego wyzwalacza (jeśli to możliwe) lub usunięcie wycieku na poziomie kodu źródłowego; W ostatnim przypadku potrzebujesz pomocy Microsoftu przy tworzeniu łatki, ale wygląda na to, że oczekują, że powiesz im „dokładnie”, gdzie tak naprawdę jest problem.

Możesz spróbować znaleźć winowajcę, wskazując wyciek pamięci / zasobów, używając np. MS Application Verifier

Poklepać
źródło
Wyzwalaczem są udziały plików, których nie możemy uniknąć.
Craig,
jeśli nie możesz uniknąć wyzwalacza, znajdź wyciek za pomocą „Application Verifier” i skontaktuj się z MS z tymi informacjami.
Pat
Ponieważ jest ich wiele, wszystkie to Microsoft. Skontaktowaliśmy się już z nimi, szukamy szybszego rozwiązania, ponieważ, jak twierdzą, może zająć im tygodnie / miesiące.
Craig,
Biorąc pod uwagę, że MS tak naprawdę nie spieszy się z rozwiązaniem tego rodzaju problemów w nieaktualnym systemie operacyjnym, nie sądzę, że znajdziesz szybsze rozwiązanie. Inną rzeczą jest, jeśli powiesz im, gdzie znajduje się wyciek.
Pat
Mamy otwartą sprawę i współpracujemy z nimi od miesiąca. Wyciek występuje dosłownie w serwisie stacji roboczej.
Craig,
-1

Tworzenie pamięci RAM jest łatwe, ale nie ma rozwiązania.

Sugeruję Sysinternals RAMMAP lub VMMAP do głębszego zbadania. Dzięki tym narzędziom możesz lepiej zobaczyć, co się dzieje. bardzo często jest to problem z metaplikami.

Od wersji Server 2008 mamy ten problem ze wszystkimi serwerami terminali, którym kończy się pamięć z niewiarygodnym zużyciem pamięci w czasie podczas uruchamiania aplikacji z udziału.

Naszym obejściem jest hostowanie tych aplikacji na osobnym serwerze terminali i często zerowanie zużycia pamięci.

Robimy to za pomocą samodzielnie zaprojektowanej aplikacji wiersza polecenia c ++ za pomocą
SetProcessWorkingSetSize () z SeDebugPrivilege we wszystkich procesach

Zdecydowanie zaleca się, aby nie robić czegoś takiego;)

Magnus
źródło
Dlaczego głosować? Dokładnie o co prosiliśmy! Nie ma przyjemności próbować tutaj pomóc ...
Magnus