Na jednym z serwery plików z systemem Windows Server 2008 R2 wystąpił problem z wysoką pamięcią RAM, co spowodowało problemy z wydajnością serwera i działających na nim usług. Jak się okazało, pamięć była zatkana systemowa pamięć podręczna plików z metadanymi systemu plików. Potencjalnie dotyczy to wszystkich serwerów plików z dużą liczbą plików, do których użytkownik uzyskuje dostęp. Najbardziej krytyczny problem dotyczy 64-bitowych wersji systemu Windows, w których rozmiar metapliku w pamięci może zajmować prawie całą pojemność zainstalowanej pamięci RAM. W artykule zrozumiemy, w jaki sposób objawia się problem, zidentyfikujemy jego źródła i rozwiązania.
Treść
- Wysokie obciążenie pamięci RAM na serwerze plików Windows
- Co to jest metaplik w systemie Windows??
- Szybko wyczyść metaplik MFT w pamięci
- Usługa dynamicznej pamięci podręcznej do zarządzania pamięcią podręczną plików
Wysokie obciążenie pamięci RAM na serwerze plików Windows
Problem objawia się następująco: w Menedżerze zadań (Menedżerze zadań) widzimy, że na serwerze zajmowana jest pamięć RAM 95–99%.
Przechodząc do zakładki procesu, nie będziesz w stanie znaleźć wyciekającego procesu o nienormalnie wysokim zużyciu pamięci. Ponadto, jeśli losowo zsumujesz pamięć zajętą przez wszystkie procesy wyświetlane w menedżerze zadań, nie możesz nawet zbliżyć się do 50% pamięci fizycznej zainstalowanej na serwerze. Więc kto zjadł całą pamięć?
Narzędzie RAMMap (Mark Russinovich) może dać prawdziwy podział wykorzystania pamięci RAM. Pobieramy archiwum za pomocą narzędzia i uruchamiamy plik RAMMap.exe z uprawnieniami administratora z archiwum. Tab Użyj Liczy się, widzimy, że najbardziej fizyczna pamięć używana przez obiekt Metaplik (w naszym przypadku odpowiada 11 z 25 GB pamięci RAM serwera).
Co to jest metaplik w systemie Windows??
Metaplik - jest częścią pamięci podręcznej systemu, która zawiera metadane systemu plików NTFS i służy do zwiększenia szybkości systemu plików podczas uzyskiwania dostępu do plików. Metadane NTFS obejmują dane MFT (Master File Table). Dla każdego pliku / folderu, do którego użytkownicy uzyskali dostęp, w metapliku tworzony jest odpowiedni blok o rozmiarze co najmniej 1 Kb (wpis dotyczący atrybutu każdego pliku zajmuje 1 kb, a każdy plik ma co najmniej jeden atrybut). Tak więc na serwerach plików z dużą liczbą plików, do których stale uzyskuje się dostęp, rozmiar pamięci podręcznej systemu NTFS (metaplik) może osiągnąć kilka gigabajtów.
Wyłączenie tej pamięci podręcznej lub zarządzanie nią przy użyciu standardowych narzędzi systemu Windows zakończy się niepowodzeniem. Jako rozwiązanie możesz zwiększyć ilość pamięci na serwerze, ale nie zawsze jest to możliwe..
Po ponownym uruchomieniu serwera pamięć używana przez metaplik jest zwalniana, ale z czasem rozmiar metapliku w pamięci nadal zaczyna niekontrolowanie rosnąć.
Na przykład możesz oszacować rozmiar tabeli MFT za pomocą innego narzędzia Russinovich - ntfsinfo. Na przykład w naszym przykładzie dla dysku 2 TB rozmiar tabeli MFT wynosi 13 GB.
Szybko wyczyść metaplik MFT w pamięci
Narzędzie RAMMap umożliwia szybkie usuwanie zużytej pamięci ze śmieci bez konieczności ponownego uruchamiania serwera. Aby to zrobić, wybierz sekcję w menu Pusty -> Pusty zestaw roboczy systemu. Po tej operacji rozmiar pamięci w metapliku zmniejszył się dziesiątki razy, a odsetek pamięci RAM używanej przez serwer spadł z 95% do 26%.
Główną wadą tej metody jest proces czyszczenia ręcznego i nie automatyzuje się w żaden sposób..
Usługa dynamicznej pamięci podręcznej do zarządzania pamięcią podręczną plików
Innym, bardziej kardynalnym rozwiązaniem problemu wysokiego obciążenia pamięci RAM jest metaplik systemu plików Dynamiczny Pamięć podręczna Service (http://www.microsoft.com/en-us/download/details.aspx?id=9258). Ta usługa za pośrednictwem systemowego interfejsu API umożliwia zarządzanie parametrami przydzielonej pamięci podręcznej.
Jest ważne. Użyj tego rozwiązania tylko wtedy, gdy masz problemy opisane powyżej. Zainstalowanie tej usługi nie będzie rozwiązaniem uniwersalnym z innych powodów braku pamięci na serwerach.Instalacja DynCache jest dość prosta (szczegółowe instrukcje znajdują się w archiwum z programem).
- Skopiuj plik do Dyncache.exe do katalogu % SystemRoot% \ System32
- Utwórz usługę Dyncache zespół
sc create DynCache binpath =% SystemRoot% \ System32 \ DynCache.exe start = auto type = own DisplayName = "Dynamic Cache Service"
- Zaimportuj plik Dyncache.reg do rejestru (zawiera wartości domyślne)
- Zmień wartości następujących kluczy rejestru HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ DynCache \ Parameters
- MaxSystemCacheMBytes: 4096 (dec) - maksymalny rozmiar pamięci podręcznej
- MinSystemCacheMBytes: 100 (dec) - minimalny rozmiar
- Uruchom usługę za pomocą polecenia
sc uruchom DynCache
W naszym przypadku po zainstalowaniu usługi DynCache użycie pamięci przez metaplik przestało przekraczać wartość 4 GB, którą ustawiliśmy. Użytkownicy nie ujawnili żadnych problemów z obniżeniem wydajności serwera plików.