Maksymalna pamięć SQL Server, plik stronicowania, maksymalny stopień równoległości

15

Trzy pytania mają nadzieję, że wy, panowie DBA wszechświata, możecie odpowiedzieć:


  1. Wiem, że najlepszą praktyką jest ustawienie maksymalnej pamięci SQL Server. Więc jeśli serwer z 44 GB RAM ma zainstalowany SQL Server, powinniśmy ustawić maksymalną pamięć SQL Server na około 37 GB.

Ale co powinniśmy ustawić, jeśli usługa SQL Analysis Service i SQL Reporting Services są zainstalowane na tym samym serwerze, co SQL Server? Czy lepiej więc ustawić maksymalną pamięć SQL Server na 22 GB pamięci RAM, aby Analiza mogła zająć drugą pamięć RAM o pojemności 22 GB?


  1. Na serwerze z programem SQL Server z 44 GB pamięci RAM, jaka jest najlepsza praktyka dotycząca ustawiania rozmiaru pliku strony? Przeczytałem na Brent Ozar ( http://www.brentozar.com/archive/2014/06/sql-server-setup-checklist-free-ebook-download/ ) następujące:

SQL Server nie potrzebuje ogromnego pliku strony. jeśli instalujesz inne aplikacje na serwerze (co nie jest zalecane - SQL Server powinien być izolowany). może być potrzebny większy plik strony. Jeśli SQL Server jest jedyną ważną usługą działającą w tym urządzeniu, zwykle tworzymy plik strony o rozmiarze 2 GB na dysku systemowym.

Microsoft mówi, że powinniśmy ustawić system plików stron zarządzanych na 1,5x pamięci RAM, która jest zgodna z zaleceniami Remusa (patrz -> http://rusanu.com/2009/11/22/system-pagefile-size-on-machines-with -large-ram / ).

Na naszym serwerze z 44 GB pamięci RAM mamy zainstalowany program SQL Server obok usług SQL Analysis Service i SQL Reporting Services. Jakiego rozmiaru powinniśmy ustawić plik strony?


  1. W przypadku SharePoint, SQL Server, który jest częścią farmy SharePoint i gdzie SharePoint przechowuje swoje bazy danych, maksymalny stopień równoległości powinien być ustawiony na 1. Teraz, gdy mamy serwer, który nie jest częścią farmy SharePoint (nazwij go sql2) na tym serwer mamy zainstalowany SQL Server, SQL Analysis and Reporting. SharePoint nie przechowuje swoich baz danych na tym serwerze, ale mamy utworzone bazy danych / kostki do raportowania i analizy, które SharePoint czyta i zapisuje.

Brent Ozar mówi:

Ogólna zasada: ustaw tę liczbę na liczbę rdzeni fizycznych w pojedynczych gniazdach węzłów NUMA (procesor) na twoim sprzęcie lub mniej

Co powinniśmy skonfigurować w tym wystąpieniu programu SQL Server, aby uzyskać maksymalny stopień równoległości, gdy ma on 4 jednostki VCPU?


Mam nadzieję, że dacie nie tylko mnie, ale więcej administratorom sql nieco więcej wglądu w najlepsze praktyki niż dżungla w interwebach.

sp_eric_blitz
źródło

Odpowiedzi:

12

Twoje 3 pytania dotykają max memory, page filei max dop setting.

MAKSYMALNA PAMIĘĆ


Jeśli serwer jest dedykowany SQL Serverowi tylko bez usług analitycznych (ponieważ SSAS to kolejna bestia), zalecane najlepsze praktyki Glenna są dobrym punktem wyjścia . Aby uzyskać dodatkowe komponenty, zapoznaj się z blogiem Jonathana, w jaki sposób skonfigurować maksymalną pamięć .

Odpowiedziałem na temat konfiguracji pamięci maksymalnej i minimalnej pamięci programu SQL Server . Będzie to pomocne, jeśli na instancji serwera działa wiele pakietów SSIS .

Plik strony


Zwykle ustawiam go z dala od C:\napędu na dysku, który ma wystarczającą ilość miejsca na dysku. Zgadzam się z zaleceniami Remusa i Brenta. Powinno być PAGE FILE FOR SQL SERVER = 1.5 * RAM. Plik strony będzie przydatny, gdy znajdziesz się w sytuacji, w której musisz wziąć FULL MEMORY DUMP (zwykle pytany przez Microsoft CSS) w celu rozwiązania problemu.

Przeczytaj Jak dokładnie określić odpowiedni rozmiar pliku strony dla 64-bitowych wersji systemu Windows KB 889654, a Buck Woody mówi tutaj o pliku strony .

Ustawienie MAX DOP


W przypadku SharePoint zaleca maxdop = 1się ustawienie całej instancji. W przypadku normalnego serwera sql sugerowałbym, abyś podążał - Jaki jest dobry, powtarzalny sposób obliczania MAXDOP na SQL Server? Mam napisany skrypt, który to dla ciebie wyliczy.

Istota jest poniżej ( KB 2806535 również wspomina o tym samym):

8 or less processors    ===> 0 to N (where N= no. of processors)
More than 8 processors  ===> 8
NUMA configured         ===> MAXDOP should not exceed no of CPUs assigned to each 
                                 NUMA node with max value capped to 8
Hyper threading Enabled ===> Should not exceed the number of physical processors.

Na marginesie proponuję przeczytać - Zalecane aktualizacje i opcje konfiguracji dla SQL Server 2012 i SQL Server 2014 z wysokowydajnymi obciążeniami

Kin Shah
źródło
Należy zauważyć, że w blogu Bucka Woody, o którym mowa powyżej, Remus komentuje: „Tym, co oszczędza dzień, jest AWE: pamięć zarezerwowana przez AWE nie musi mieć rezerwacji pliku strony (ponieważ jest zablokowana w fizycznej pamięci RAM i dlatego nie może być na stronie). Użycie AWE jest automatyczne na x64. ” Co wydaje się widoczne w AWE, nie potrzebujemy dużego pliku strony.
Jason Carter,
@ Kin powiedziałeś „zgadzam się z zaleceniami Remusa i Brenta”. Ale po przejrzeniu Przewodnika instalacji Brenta (cytowanego przez PO powyżej) i artykułu Remusa, są ze sobą sprzeczne. Więc dla mnie twoja odpowiedź dotycząca pliku strony pozostawia nierozstrzygnięte pytania.
Magier
1
@Magier Zwykle wybieram zalecenie MS, ponieważ byłem w sytuacji, w której potrzebowaliśmy zrobić pełny zrzut pamięci, aby zdiagnozować problem - nie wiedzieliśmy, czy to serwer Windows, czy SQL. W takiej sytuacji zalecenie MS jest najlepsze. Jeśli nie wpadasz w taką sytuację, ważna jest również rada Brenta. Zwykle jestem po bezpiecznej stronie, więc idę z PAGE FILE FOR SQL SERVER = 1.5 * RAM. Czy to jest odpowiedź na Twoje pytanie ?
Kin Shah
3

Na naszym serwerze z 44 GB pamięci RAM mamy zainstalowany program SQL Server obok usług SQL Analysis Service i SQL Reporting Services. Jakiego rozmiaru powinniśmy ustawić plik strony?

Cóż, dodając do tego, o czym już wspomniał Kin, sugeruję, abyś Perfmon Countersobliczył jaki powinien być rozmiar pliku strony. Zgadzam się również na zalecenie Remusa, aby plik stronicowania był 1,5 razy większy niż RAM w systemie . Jednak w tym zaleceniu uwzględniono wszystkie możliwe aspekty i scenariusz oraz „ogólne zalecenie”. Myślę, że bardziej interesuje Cię konkretna wartość. Więc oto jest

Potrzeby pliku stronicowania w poszczególnych systemach będą się różnić w zależności od roli serwera, obciążenia itp. Istnieją pewne liczniki wydajności, których można użyć do monitorowania wykorzystania pamięci prywatnej przez system lub dla poszczególnych stron pliku. Nie ma sposobu, aby określić, ile rezyduje prywatnej pamięci procesu, a ile jest przesyłane do plików stronicowania.

Pamięć: zatwierdzone bajty: liczba bajtów pamięci wirtualnej, która została zatwierdzona. Niekoniecznie reprezentuje to użycie pliku strony - reprezentuje ilość miejsca na plik strony, która zostałaby wykorzystana, gdyby proces został całkowicie nierezydentny

Pamięć: Limit zatwierdzania: liczba bajtów pamięci wirtualnej, które można zatwierdzić bez konieczności rozszerzania plików stronicowania.

Plik stronicowania:% wykorzystania Procent zatwierdzonego pliku stronicowania

Plik stronicowania:% Szczyt wykorzystania Największy procent zatwierdzonego pliku stronicowania

Użyj powyższych liczników, aby ustawić odpowiednią wartość dla pliku strony. Możesz przeczytać ten link, aby uzyskać więcej informacji o pliku strony.

Czy lepiej więc ustawić maksymalną pamięć SQL Server na 22 GB pamięci RAM, aby Analiza mogła zająć drugą pamięć RAM o pojemności 22 GB?

Nie, nie sądzę, więc nie spełniłeś tutaj wymagań systemu operacyjnego. Najpierw musisz ustawić optymalną maksymalną pamięć serwera dla SQl Server. Ten wątek SE ma więcej szczegółów na temat ustawiania prawidłowego Maksymalna wartość pamięci serwera. Ponownie mocno i zawsze odpowiadam na licznikach perfmon, aby zobaczyć, która wartość będzie optymalna. Sugeruję przeczytanie tego artykułu i skorzystanie z pomocy liczników, aby ustawić optymalną wartość dla SSAS. Kiedyś użyłem tego bloga do ustawienia wartości pamięci dla SSAS. Nie przepadam za SSAS, więc moje komentarze będą ograniczone tylko do tego artykułu.

Powinieneś zachować MAXDOP = 1 dla instancji Sharepoint jego powszechnie akceptowanego parametru. Jeśli IIRC zalecenie to stało się szeroko akceptowane po częstych impasach, gdy maksymalny stopień równoległości został pozostawiony do wartości domyślnej

Shanky
źródło
3

Wszystkie pozostałe odpowiedzi udzielone do tej pory w odniesieniu do rozmiaru pliku strony stosunkowo nieaktualne artykuły. Ten post na blogu Technet jest bardziej aktualny (październik 2015 r.) I zawiera bardziej szczegółowy sposób obliczania idealnego rozmiaru pliku strony w nowoczesnych systemach.

Wyraźnie stwierdzają, że stara zasada 1,5 x RAM nie ma już zastosowania.

Wkleiłem podstawową treść tego artykułu poniżej, aby uniknąć gnicia linków.

Pamiętaj, że zalecają zbieranie metryk z serwera działającego w szczytowym okresie użytkowania przez co najmniej 1 tydzień - więc na etapie planowania i wdrażania projektów możesz nie być w stanie tego zrobić i będziesz musiał znaleźć czas na później w swoim projekcie aby to zrobić.


Zmieniając rozmiar pliku strony, musimy wziąć pod uwagę potrzeby pamięci naszych aplikacji i ustawienia zrzutu awaryjnego.

Skąd wiesz, ile pamięci potrzebuje Twoja aplikacja? Najlepszym sposobem jest przyjęcie linii bazowej.

Run Performance Monitor (Perfmon)
Go to Data Collector Sets\User Defined
Right click on User Defined and select New
Select Create Manually and next
Check Performance counter
Add the following counters:

        Memory\Committed Bytes - Committed Bytes is the amount of committed virtual memory, in bytes.
        Memory\Committed Limit - Amount of virtual memory that can be committed without having to extend the paging file
        Memory\% Committed Bytes In Use - Ratio of Memory\Committed Bytes to the Memory\Commit Limit 

Uwaga: Upewnij się, że zbierasz informacje przez długi okres (co najmniej tydzień), a serwer działa przy maksymalnym wykorzystaniu.

Formuła rozmiaru pliku strony powinna wynosić:

(Maksymalna wartość zatwierdzonych bajtów + dodatkowy 20% bufor, aby pomieścić wszelkie impulsy obciążenia) -Rozmiar pamięci RAM

Na przykład: jeśli serwer ma 24 GB pamięci RAM, a maksymalna liczba zatwierdzonych bajtów wynosi 26 GB, zalecany plik strony to: (26 * 1,2) -24) = 7,2 GB

A co z drugim czynnikiem: rozmiarem potrzebnym do rejestrowania informacji w przypadku awarii systemu?

Rozmiar zrzutu pamięci zależy od jego typu:

Complete Memory Dump  RAM Size + 257 MB
Kernel Memory Dump  The amount of kernel-mode memory in use (on 32-bit maximum is 2 GB, on 64-bit the maximum can go up until 8 TB)
Small Memory Dump  64KB  512 KB

W większości przypadków zrzut pamięci jądra jest wystarczający do analizy przyczyn źródłowych, ponieważ pełny zrzut pamięci jest wymagany tylko w określonych przypadkach, na przykład chcesz zobaczyć, co się stało w trybie użytkownika.

Z mojego doświadczenia wynika, że ​​rozmiar zrzutu pamięci jądra jest zwykle następujący:

On System with up to 256GB RAM =  8-12 GB size for Kernel Memory dump
On System with up to 1.5TB RAM = 8-32 GB size for Kernel Memory dump

Jednak te liczby NIE są oficjalną rekomendacją Microsoft i mogą się różnić na twoich serwerach, dlatego zawsze sprawdzaj przed złożeniem wniosku.

Mikrofon
źródło
2

Odpowiadam, skoro jestem jedną z osób, które cytujesz, heh.

1. Na co powinienem ustawić maksymalną pamięć, kiedy uruchamiam również Analysis Services?

Nie znajdziesz tam wskazówek, ponieważ SSAS jest jak każda inna aplikacja instalowana na SQL Server: po prostu nie wiemy, ile pamięci będziesz używać. Traktuj SSAS / SSIS / SSRS jako aplikacje innych firm - tak się składa, że ​​są one dołączone jako „bezpłatne” w polu SQL Server. Mają zupełnie inne potrzeby procesora, pamięci i pamięci.

2. Na co powinienem ustawić rozmiar pliku strony?

Moje zalecenia są takie, aby Windows mógł zrobić mini-zrzut. Jeśli napotkasz problem polegający na tym, że musisz zadzwonić do pomocy technicznej Microsoft, możesz zacząć od mini-zrzutu. Jeśli problem się powtórzy i nie mogą go rozwiązać na podstawie mini-zrzutu (lub innych źródeł informacji, takich jak dziennik błędów), mogą poprosić o przejście do rozmiaru 1,5x RAM.

Zalecenia firmy Microsoft dotyczące 1,5x pamięci RAM są po to, aby system Windows mógł wykonać PEŁNY zrzut pamięci w przypadku awarii systemu.

W dzisiejszych czasach, gdy serwery mają 64-128-256 GB pamięci RAM, zwykle nie jest dobrym pomysłem, aby system Windows wstrzymał się, aby zapisać całą zawartość pamięci podczas awarii. Wolisz, aby SQL Server był ponownie uruchomiony i działał z zawartością mini-zrzutu, a nie pełną. Zachowaj pełne zrzuty na później - zazwyczaj możesz przejść całą swoją karierę bez konieczności przesyłania pliku zrzutu 64 GB do firmy Microsoft. (Powodzenia w tym.)

3. Na co mam ustawić MAXDOP dla SharePoint?

To, co nazywacie „moimi” zaleceniami, pochodzi od Microsoft KB 2806535 . Zacznij od tego w ogóle, ale gdy konkretna aplikacja powie Ci coś innego, wtedy wie coś o swojej aplikacji, która różni się od SQL Servera w ogóle - postępuj zgodnie z tym.

Brent Ozar
źródło