Troubleshooting Resource Governor

Ten temat zawiera wskazówki rozwiązywania problemów dla warunków, które mogą wystąpić podczas używania Resource Governor.Niniejsze wytyczne jest podzielony na następujące kategorie:

  • Błędy

  • Nieoczekiwane wyniki.

  • Problemy związane z wydajnością i błędy

Błędy Resource Governor

Komunikaty o błędach Resource Governor obejmuje wszystkie operacje dotyczące konfigurowania i używania Resource Governor.

Poniższa tabela zawiera przykłady Resource Governor komunikatów o błędach i zawiera wskazówki dotyczące rozwiązania problemu opisanego w komunikacie o błędzie.

Numer błędu

Komunikat o błędzie

Rozwiązanie

8645

Przekroczono limit czasu podczas oczekiwania na zasoby pamięci wykonać kwerendę w puli zasób "myTestPool" (257).Uruchom ponownie kwerendę.

Można albo skonfigurować wartość limitu czasu może być wyższa lub zmniejszyć obciążenie kwerendy do serwera.

8651

Nie można wykonać operacji, ponieważ udzielenia żądanej pamięci nie był dostępny w puli zasób "myTestPool" (257).Uruchom ponownie kwerendę, zmniejszenia obciążenia kwerendy lub sprawdź ustawienia konfiguracja Resource Governor.

Uruchom ponownie kwerendę później w czas.Zmniejszenie obciążenia kwerend na serwerze.Uzyskaj administratora, aby sprawdzić ustawienie konfiguracja Resource Governor.

8657

Nie można uzyskać przyznanie 1024 KB pamięci, ponieważ przekracza limit maksymalnej konfiguracja w grupa obciążenia "myTestGroup" (267) i puli zasób "myTestPool" (257).Skontaktuj się z administratorem serwera, aby zwiększyć limit wykorzystania pamięci.

Nowa napisać kwerendę zmniejszenie pamięci zużywających operacje takie jak sortowanie i mieszania łączyć.Poproś administrator systemu, aby zezwolić na wyższy limit wykorzystania pamięci.

Administrator może dopasować jedną lub obie z następujących parametrów:

  • max_memory_percent na pule zasób, która określa miejsca dotacji maksymalną pamięć fizyczną dla wszystkich kwerend.

  • request_max_memory_grant_percent na grupach obciążenia, która określa na kwerendy limit.

Administrator może uzyskać rzeczywistych fizycznych limitu z max_target_memory_kb kolumna z sys.dm_exec_query_resource_semaphores.

Na kwerendy limit może być obliczony przez max_target_memory_kb * request_max_memory_grant_percent.

UwagaUwaga:
Administrator musi upewnić się, że wymagana pamięć określona w komunikacie o błędzie jest mniejsza niż obliczone na kwerendy limit powyżej.Jednakże należy zauważyć że coraz request_max_memory_grant_percent ma efekt uboczny zmniejszenie współbieżność duże kwerendy.Na przykład użytkownicy mogą oczekiwać uruchomienie trzy duże kwerendy z domyślnym ustawieniem 25 procent, ale tylko dwa duże kwerendy z ustawieniem 40 procent.

10900

Nie można skonfigurować Resource Governor podczas uruchamiania.Sprawdź dziennik błędów programu SQL Server, komunikaty o błędach szczególnych lub Sprawdź spójność baza danych master, uruchamiając polecenie DBCC CHECKCATALOG('master').

Spróbuj uruchomić "dbcc CHECKCATALOG('master')".

10901

Użytkownik nie ma uprawnień do zmiany konfiguracja Resource Governor.

Udziel uprawnienia umożliwiają zmianę konfiguracja Resource Governor i spróbuj ponownie.

10902

Funkcja zdefiniowana przez użytkownika "dbo.rgclassifier_v1" nie istnieje w baza danych master, lub użytkownik nie ma uprawnień dostępu do niego.

Tworzenie funkcja zdefiniowanej przez użytkownika klasyfikatora (UDF) w wzorca lub wymagane uprawnienia istniejących klasyfikatora UDF.

10903

Nazwa określonego schematu "dbo" dla klasyfikatora funkcja zdefiniowana przez użytkownika albo nie istnieje lub użytkownik nie ma uprawnień do korzystania z niego.

Spróbuj użyć innej nazwy schematu lub uzyskać odpowiednie uprawnienia dla tego schematu.

10904

Resource Governor konfiguracja nie powiodło się.W grupach obciążenia, usunięty lub przeniesiony do innego zasób pule są aktywne sesje.Rozłącz wszystkie sesje aktywne w grupach dotyczy obciążenia i spróbuj ponownie.

Rozłącz wszystkie aktywne sesje w dotkniętych grup i spróbuj ponownie.

UwagaUwaga:
To wydanie z Resource Governor nie umożliwia przenoszenia grup między pulami, gdy istnieją otwarte sesje w nich.

10905

Nie można ukończyć konfiguracja Resource Governor jest za mało pamięci.Zmniejszyć obciążenie serwera lub spróbuj wykonać operację na połączenia dedykowane administratora.

Zmniejszyć obciążenie serwera lub spróbuj wykonać operację konfigurowanie dla połączenia dedykowane administratora.

10906

Obiekt "dbo". "rgclassifier_v1" nie jest prawidłowym Resource Governor klasyfikatora zdefiniowanej przez użytkownika funkcja.Prawidłowe klasyfikatora funkcja zdefiniowanej przez użytkownika musi być związanych ze schematem, zwracają sysname i mieć nie parametrów.

Podaj prawidłową klasyfikatora UDF.Prawidłowe klasyfikatora UDF musi:

  • Sysname zwrotu.

  • Mieć żadnych parametrów.

  • Utworzone z opcją SCHEMABINDING.

10907

Atrybut "min_cpu_percent" wartość 50 jest większa niż atrybut "max_cpu_percent" wartość 40.

Zapewnia minimalną wartość jest mniejsza lub równa wartości maksymalnej.

10908

Atrybut "max_memory_percent" o wartości 40 jest mniejsza niż atrybut "min_memory_percent" o wartości 60.

Należy podać maksymalną wartość, która jest większa lub równa wartości minimalnej atrybut.

10909

Nie można utworzyć pulę zasób.Maksymalna liczba pul zasób nie może przekraczać obecny limit 20, włączając pule zasób wstępnie zdefiniowanych.

Upuść pule zasób, które nie są potrzebne.

10910

Nie można ukończyć operacji.Określony MIN_CPU_PERCENT wartość 25, powoduje, że suma minimalne na wszystkie pule zasób może przekroczyć 100 procent.Zmniejszenia wartości lub zmodyfikować inne pule zasób sumy jest mniejsza niż 100.

Zmniejszenia wartości dla MIN_CPU_PERCENT.

10911

Nie można wykonać żądanej operacji, ponieważ zasób puli "myTestPool2" nie istnieje.

Kwerenda sys.resource_governor_resource_pools wykazu widok, aby zobaczyć, jakie pule zasób są aktualnie zdefiniowane.Wybierz istniejącą pulę lub Utwórz nową pulę.

10912

Nie można ukończyć operacji.Upuszczanie wstępnie grupa obciążenia nie jest dozwolone.

Wybierz użytkownika utworzone grupa obciążenia upuścić.

10913

Użytkownicy nie mogą usuwać grupa obciążenia "wewnętrzną" w "wewnętrzną" Pula zasób.

Tworzenie grupa obciążenia w puli utworzonej przez użytkownika lub domyślną pulę.

10914

Nazwa grupa obciążenia "#mygroup" nie może zaczynać się od # ##.

Nie należy używać # lub ## when Tworzenie grupy lub puli.

10915

Nie można ukończyć operacji.Zmienianie "wewnętrzną" grupa obciążenianie jest dozwolone.

Wybierz puli utworzonej przez użytkownika lub grupy do zmiany.

Uwagajest dozwolona zmiana konfiguracja domyślnej puli zasób lub grupy.

10916

Nie można usunąć puli zasób "myTestPool" ponieważ zawiera grupa obciążenia "myTestGroup".Upuść lub Usuń wszystkie grupy obciążenia przed upuszczeniem go przy użyciu tej puli zasób.

Upuść lub Przenieś wszystkie grupy obciążenia, korzystające z tej puli, a następnie upuść puli.

10917

Nie można zmienić grupy obciążenia.Albo "Z" lub "USING" Klauzula musi być określona.

Użyj albo "Z" lub "USING" Klauzula w instrukcja ALTER grupy obciążenia.

10918

Nie można utworzyć pulę zasób "myTestPool" ponieważ już istnieje.

Wybierz nazwę puli innego zasób.

10919

Wystąpił błąd podczas odczytu konfiguracja Resource Governor baza danych master.Sprawdzić integralność baza danych master lub skontaktuj się z administrator systemu.

Spróbuj uruchomić "dbcc CHECKCATALOG('master')".

10920

Nie można usunąć zdefiniowanej przez użytkownika funkcja 'dbo.myclassifer'.Jest on używany jako Resource Governor klasyfikatora.

Brak.

10921

"default" grupa obciążenianie można przenieść z 'Domyślne' Pula zasób.

Nie dotyczy.

10981

Rekonfiguracja Resource Governor powiodło się.

Ten komunikat jest zapisywany do programu SQL Server zdarzenie dziennika.

10982

Nie można uruchomić Resource Governor klasyfikatora funkcja zdefiniowanej przez użytkownika.Zobacz poprzednie błędy dziennik błędów programu SQL Server z 58 identyfikator sesja szczegółowe.Upłynięte klasyfikatora czas: 800 ms.

Ten komunikat jest zapisywany dziennik błędów programu SQL Server.

Uwagauprzedniego wiadomości dziennik błędów programu SQL Server, z tym samym identyfikatorem procesu serwera (SPID) może podać przyczyny niepowodzenia określonego.Klasyfikator długim może spowodować limit czasu logowania użytkownika.Sprawdź, jeśli czas klasyfikatora przekracza limit czasu logowania klient.

10983

Rekonfiguracja Resource Governor zostało anulowane przez użytkownika.

Nie dotyczy.

10984

Rekonfiguracja Resource Governor nie powiodło się.

Nie dotyczy.

Nieoczekiwane wyniki.

Nieoczekiwane wyniki opisano sytuacje, w których działają różne elementy z Resource Governor, ale wyniki są inne niż oczekiwano.Na przykład klasyfikacja sesja nie wydaje się działać poprawnie lub istnieją problemy skojarzone z upuszczanie lub tworzenia grup obciążenia.

Klasyfikacja sesji

Sesje przejdzie do domyślnej grupa obciążenia, gdy następujące warunki:

  • Klasyfikator UDF nie istnieje lub nie jest włączona.

  • Klasyfikator UDF umieścić je, który wskazuje błąd logiki funkcja.

Podstawowych procedur rozwiązywania problemów

Jeśli nie klasyfikatora UDF dostępne dla klasyfikacji następnie wszystkie sesje automatycznie przejdzie do domyślnej grupa obciążenia.Po utworzeniu klasyfikatora UDF, należy sprawdzić, czy jest zarejestrowany z Resource Governor i aktualizacji konfiguracja w pamięci.

Tworzenie, rejestrowanie i Włączanie klasyfikatora UDF jest trzech etapów:

  • Najpierw należy utworzyć funkcja.

    CREATE FUNCTION function_name() RETURNS <something> 
    WITH SCHEMABINDING
    
  • Po drugie należy zarejestrować funkcja z Resource Governor.

    ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION=schema_name.function_name)
    
  • Po trzecie musisz zaktualizować konfiguracja Resource Governor w pamięci.

    ALTER RESOURCE GOVERNOR RECONFIGURE
    

Po pierwsze, należy podczas rozwiązywania problemów z klasyfikacji jest Sprawdź, czy funkcja utworzony jest zarejestrowane Resource Governor i konfiguracja został zaktualizowany.Uzyskaj nazwę schematu za pomocą następującej kwerendy (schema_name) i nazwę funkcja klasyfikatora (function_name) klasyfikatora UDF, którego używa obecnie Resource Governor.

USE master
SELECT 
      object_schema_name(classifier_function_id) AS [schema_name],
      object_name(classifier_function_id) AS [function_name]
FROM sys.dm_resource_governor_configuration

Można użyć poprzedniego podejścia rozwiązywać scenariusz, w którym zmienione klasyfikatora UDF, ale Resource Governor programu poprzedniego logiki funkcja do klasyfikowania sesje.To zachowanie oznacza, wprowadzone zmiany nie zostały zastosowane do konfiguracja w pamięci.

Zaawansowane rozwiązywanie problemów

Można utworzyć funkcja bardzo skomplikowane klasyfikatora nie dawać oczekiwanych wyniki lub znacznych zasób.Po zdefiniowaniu podstawowych procedur rozwiązywania problemów należy następnie sprawdź, czy funkcja logiki dźwięku.Najgorszy scenariusz jest jednym flaw kodowania, w którym wyniki w nieskończonej pętli lub niekontrolowane zapytanie.

Dedykowane połączenia administratora (DAC) można użyć rozwiązywać źle napisane funkcja klasyfikatora, ponieważ DAC nie podlega klasyfikacji i mogą być używane podczas Resource Governor jest uruchomiony i klasyfikowania sesje przychodzące.Aby uzyskać więcej informacji, zobacz Za pomocą dedykowanego połączenia administracyjnego.

Ostrzeżenie

Jeśli DAC nie jest dostępny do rozwiązywania problemów, można ponownie uruchomić system w trybie pojedynczego użytkownika.Chociaż w trybie pojedynczego użytkownika nie podlega klasyfikacji, nie można zdiagnozować Resource Governor klasyfikacji jest uruchomiona.

Można uzyskać informacje dotyczące funkcja klasyfikatora przez następujące badania:

  • sys.dm_exec_query_stats.(contains statement information but not the actual function)

  • sys.dm_exec_sql_text(używać w połączeniu z sql_handle z sys.dm_exec_query_stats)

  • PreConnect:Starting Event Class (zawiera identyfikator i nazwę funkcja klasyfikatora)

Ponownie skonfiguruj awarii

Resource Governor przechowuje oddzielnych sesji, dopóki nie zakończy instrukcja ALTER RESOURCE GOVERNOR ponownie skonfigurować uruchamianie zmiany metadane.ZMIENIAĆ ponownie skonfigurować zasób GOVERNOR powiedzie się próba upuść grupę zawierającą sesji aktywnych lub Otwórz lub próby upuść puli zasób zawierający grupy obciążenia.

Aby uzyskać konfiguracja w pamięci i przechowywane, kwerenda sys.dm_resource_governor_configuration i sys.resource_governor_configuration odpowiednio.Wartość 1 dla is_reconfiguration_pending (sys.dm_resource_governor_configuration) wskazuje konfiguracja sesja nie został zaktualizowany.Jeśli jest to przypadek, opcje są następujące:

  • Poczekaj na zakończenie lub upuszczania ich połączenia sesji.

  • Przerwać aktywnej sesja lub usuwanie połączenia sesja.

  • Ponownie utworzyć pulę upuszczony lub grupy, ustawienia i uruchom ponownie skonfigurować RESOURCE GOVERNOR ALTER.

Problemy związane z wydajnością i błędy

Wydaje się być problemy z wydajnością podczas korzystania z Resource Governor, należy ustalić, czy przyczyną problemu jest konfiguracja Resource Governor.Wskazówki dotyczące rozwiązywania problemów w tej sekcji jest podzielone na dwie kategorie:

  • Klasyfikacja sesji

  • Wykonywanie kwerendy

Klasyfikacja sesji

Długotrwały logowania wyzwalacza lub klasyfikatora zdefiniowanej przez użytkownika funkcja (UDF) może mieć wpływ na wydajność serwera.Jeśli wyzwalacz logowania lub UDF klasyfikatora trwa długo czas do zakończenia połączenia czass out.Wyzwalacz lub funkcja, kontynuuje i korzystać z zasobów serwera.

Jeśli podejrzewasz, że istnieją sesji uruchomionych w stanie pre-connected, zaloguj się przy użyciu połączenia dedykowane administratora i sprawdź PreConnect: uruchamianie klasy Event na istnieją wiele żądań lub sesji, które zostały rozpoczęte, ale nie ukończone.

Aby rozwiązać ten problem i uniemożliwić ponowne:

  • Zatrzymanie sesji

  • Zidentyfikować prawdopodobne przyczyny długotrwałe wyzwalacza funkcja lub logowania

  • Usunąć i zastąpić wyzwalacza lub funkcja, która jest przyczyną problemu

Wykonywanie kwerendy

Po sklasyfikowane kwerendy i wykonywanie, go może pozornie przestać odpowiadać (zawiesić się) lub nie.Podejrzewasz, że bieżące ustawienia Resource Governor może być przyczyną.Konieczne jest zbadanie następujących aspektów konfiguracja Resource Governor:

  • Żądanie ograniczanie liczby

  • Maksymalny limit Procesora

  • Ograniczanie przepustowości Procesora

  • Rozmiar pamięci dotacji

  • Błąd limitu pamięci dotacji

  • Błąd braku pamięci

  • Plan kwerend warunkami panującymi

Licznik żądania, ograniczanie

W tym scenariuszu użytkownik zgłasza obniżenie wydajności i podejrzewasz, że licznik żądania jest redukowana.

Po pierwsze, należy wykonać jest sprawdzenie, czy ograniczanie liczby żądań jest jawnie skonfigurowane grupy, który użytkownik jest w.W tym celu sprawdzania członkostwa grupy użytkownika, aby sprawdzić, czy ustawienie GROUP_MAX_REQUESTS jest włączone.Jeśli GROUP_MAX_REQUESTS nie jest włączone, jest licznik nie wyraźnego żądania ograniczania.Należy zbadać dalsze, wykonując następujące czynności.

  • Kwerenda sys.dm_os_waiting_tasks Aby zobaczyć, jeśli wszystkie żądania oczekują na typu oczekiwania RESMGR_THROTTLED.Obecność tego typu oczekiwania wskazuje ograniczania liczby żądań.

  • Uruchom Monitor wydajności i zbieranie danych przy użyciu żądania kolejkowane i żądania Active liczników.Różna od zera żądania kolejkowane licznik wskazuje ograniczanie żądania.

  • Sprawdź, czy żądania Active wartość odpowiada ustawienie GROUP_MAX_REQUESTS.Jeśli żądania Active wartość jest wyższa niż ustawienie GROUP_MAX_REQUESTS, grupa może mieć żądań, które nie ograniczono (na przykład otwartych transakcji).

  • Jeśli żądania kolejkowane wynosi zero, wyboru żądania Active wszystkich grup obciążenia udostępniania tego samego zasób puli, ponieważ puli zostały nadmiernie obciążony zbyt wielu żądań.

Maksymalny Limit Procesora

Jeśli zasada która jest napędzana przez regulator zasobów generowania zdarzeń można użyć zdarzenie, który jest generowany po osiągnięciu maksymalnego limitu Procesora.

W tym scenariuszu należy ustalić, czy maksymalny limit Procesora (REQUEST_MAX_CPU_TIME_SEC), skonfigurowany do wykrywania kwerenda, która używa zbyt dużo Procesora jest zbyt niska.

Następujące akcje pomaga sprawdzić ustawienie limitu Procesora.

  • Rozpocznij sesja śledzenia SQL i zebrać Przekroczony próg CPU zdarzenie.Gdy żądanie użytkownika osiągnie maksymalny limit wykorzystania Procesora, serwer automatycznie generuje zdarzenie śledzenia SQL.Jeśli ustawienie jest zbyt niska, duża liczba tych zdarzeń zostanie wygenerowany.

Ostrzeżenie

To zdarzenie jest również wystawiony jako serwer powiadomienie o zdarzeniu , można napisać skrypt, który reaguje na zdarzenia.

  • Uruchom Monitor wydajności i zbieranie danych przy użyciu Max żądania czas cpu (ms) licznika.Wartość tego licznika można użyć jako przewodnik dla ustawiania limitu właściwe dla grupa obciążenia.

Ograniczanie przepustowości Procesora

W tym scenariuszu można podejrzewać, że przepustowość Procesora jest ograniczona, ponieważ % wykorzystania Procesora licznika wydajności jest bliska ustawienie zasobów Gubernator MAX_CPU_PERCENT.Następująca kwerenda zwraca wartość % wykorzystania Procesora dla wszystkich grup obciążenia i pule zasób dla wystąpienie programu SQL Server.

select * from sys.dm_os_performance_counters where counter_name = 'cpu usage %'

Aby uzyskać więcej informacji, zobacz sys.dm_os_performance_counters (języka Transact-SQL).

Można określić, czy przepustowość Procesora jest redukowana, wykonując następujące kontrole w systemie.

  • Sprawdź serwer całkowite wykorzystanie Procesora.Obciążenia innej niż SQL Server jest obecnie aktywne, mogą wpływać na kwerendy, którego dotyczy problem.

  • Sprawdź dystrybucji procesora między pulami zasób.Pula zasób może ograniczono, ponieważ innej puli ma wysoką wartość minimalną skonfigurowany dla procesora.Porównaj liczniki dla oczekiwanej (obliczony wykorzystanie Procesora) przeciwko rzeczywiste wykorzystanie Procesora.

  • Sprawdź grupy obciążenia, przypisane w puli zasób.Obciążenia z innych grup obciążenie może mieć wpływ na użytkowników, które są udostępnianie tej samej puli.

  • Sprawdź dystrybucji użycie Procesora przez pracownikom.Kwerendy, w analizowanym mogą być umieszczane na harmonogram, zawierający długo działającymi kwerendami.przypadek kwerendy ma być ograniczona, ale faktycznego wydania jest nierówny rozkład obciążenia między pracownikom.

  • Sprawdź, czy możliwych przypadków, gdy obciążenie jest uzyskiwanie zablokowane przez innych sesji, a nie jest redukowana przez ustawienia Resource Governor.

  • Sprawdź, czy liczba sesji aktualnie uruchomione kwerendy w systemie.Pofragmentowaniu liczbę jednoczesnych żądań nakaz SQL Server próbuje zapewnienia ich wszystkich otrzymują przynajmniej niektóre kwoty CPU czas aby uniknąć zablokowania Procesora.

Rozmiar pamięci dotacji

W tym scenariuszu można podejrzewać, rozmiar pamięci dotacji powoduje spowolnienie kwerendy.

Resource Governor wymusza kwerendy maksymalny limit pamięci poprzez zmniejszenie dotacji pamięci tak dużej kwerendy można dopasowanie w ramach limitu.Kwerenda pobiera mniej niż 100% dotacji pamięci, może być konieczne spill dane tymczasowe i zapisuje je na dysku, która może mieć znaczącego wpływu na wydajność.

Należy określić procent dużych kwerend do zestaw odpowiednią kwerendę maksymalny limit rozmiaru.Następujące akcje pomogą określić najlepsze ustawienia:

  • Kwerenda sys.dm_exec_query_memory_grants Aby sprawdzić bieżący stan pamięci dotacji.Ideal_memory_kb kolumna zawiera idealne kwotę na podstawie szacunku kardynalność.Requested_memory_kb kolumna zawiera kwotę pytaniem, które mogłyby zmniejszyć po osiągnięciu limitu maksymalnego kwerendy.Jeśli requested_memory_kb jest znacznie niższy niż ideal_memory_kb, a następnie kwerenda może mieć przechodzeniu często (zakładając, że szacunek Kardynalność jest poprawne).

  • Uruchom Monitor wydajności i zbieranie danych przy użyciu Ograniczona pamięć dotacje/s licznika.Wartość tego licznika reprezentuje szybkość pamięci dotacji liczba mniejsza niż kwota idealne otrzymane po uderzanie żądanie maksymalny limit rozmiaru.Duże kwerendy może działać znacznie wolniej niż te z kwotą idealna, ponieważ muszą spill na dysku, aby pozostać w granicach pamięci.

Aby złagodzić pamięci udzielić problem, należy zwiększyć limit rozmiaru puli lub limit rozmiaru maksymalnego rozmiaru pamięci.

Ostrzeżenie

Jeśli tylko zwiększyć maksymalny rozmiar pamięci, może to prowadzić do zmniejszonej współbieżność dużych kwerend.

Błąd limitu pamięci dotacji

W tym scenariuszu kwerenda nie powiedzie się z powodu błędu limitu czasu dotacji w pamięci.

Całkowita liczba aktywnej pamięci udzielić żądania i limity pamięci określonej grupa obciążenia i definicji puli zasób może odgrywać rolę w pamięci dotacji przekroczenia limitu czasu.Jeśli pula pojedynczy zasób jest współużytkowany przez wielu grup zasobów, liczba kwerend współbieżnych w innych grupach może wpłynąć limity pamięci dotacji.

Następujące akcje pomogą określić najlepsze ustawienia puli zasób:

  • Kwerenda sys.dm_exec_query_memory_grants Aby wyświetlić liczbę dotacji pamięci i oczekiwania kwerendy dla tej grupy i puli.

  • Kwerenda sys.dm_exec_query_resource_semaphores Aby zobaczyć udzielone całkowitej pamięci i cele.

Jeśli użycie pamięci dotacji jest większa niż dostępna pamięć, następnie można rozważyć zwiększenie limitu rozmiaru puli zasób.

Z błędów pamięci

Kwerenda nie powiedzie się z błąd braku pamięci.

Podstawowych procedur rozwiązywania problemów

Następujące akcje pomogą określić najlepsze ustawienia grupa obciążenia:

  • Kwerenda sys.dm_os_memory_brokers do sprawdzenia względnych pamięci dystrybucji i trend wewnątrz puli zasób.Zbyt wielu żądań w zbyt małym obszarze pamięci może prowadzić do przeciążone grupa obciążenia/resource puli i przyczyny błędów pamięci.

  • Uruchom Monitor wydajności i zbieranie danych przy użyciu liczniki puli zasób związanych z pamięcią, aby uzyskać miejsce docelowe i bieżące użycie pamięci dla dotacji pamięci, pamięci podręcznej i kompilacji i optymalizacji pamięci.Jeśli bieżące wartości są większe niż wartości miejsce docelowe, oznacza to, nadmiernie puli zasób.Należy rozważyć zmianę limitów pamięci puli.

  • Uruchom Monitor wydajności i zbieranie danych przy użyciu żądanie przyznania max pamięci licznika.Jeśli wartość licznika przekracza wartość określona przez ustawienie REQUEST_MAX_MEMORY_GRANT_PERCENT w grupa obciążenia, nie będzie prawdopodobnie kwerendy.Należy rozważyć zmianę limitu grupa obciążenia.

Zaawansowane rozwiązywanie problemów

Błąd braku pamięci (701) jest błąd rodzajowy zwracane zadania próbuje przydzielić blok pamięci z Menedżera pamięci i próba nie powiedzie się.Aby uzyskać więcej informacji, zobacz MSSQLSERVER_701.

Następujące warunki mogą być przyczyną tego błędu:

  • Puli pamięci osiągnie swój limit całkowitej.

Ostrzeżenie

Resource Governor nie może być jedynym przyczynę tego warunku.Może to być inne aplikacje uruchomione na serwerze, których zapotrzebowanie pamięci, które przyczyniają się do tego warunku.

  • Multi -strona lub Alokacja miejsca do adresów wirtualnych nie powiedzie się, ponieważ wirtualnej przestrzeni adresowej nie jest wystarczająco duży, wymagane zastrzeżenia blok wolnego.Jest to najbardziej prawdopodobne w architekturze 32-bitowego i mało prawdopodobne na architekturę 64-bitowych.

  • Multi -strona lub Alokacja miejsca do adresów wirtualnych nie powiedzie się, ponieważ całkowita zobowiązanie osiągnie limit zatwierdzanie.Dotyczy to architektur 32-bitowe i 64-bitowych.

Gdy pojawi się błąd braku pamięci, dziennik błędów jest punktem wyjścia najlepiej badanie błędu.Dziennik zawiera dane wyjściowe podobne do następującego:

2006-01-28 04:27:15.43 spid51 Failed allocate pages: FAIL_PAGE_ALLOCATION 1

Możliwe błędy zarejestrowane dziennik błędów są:

  • FAIL_PAGE_ALLOCATION następuje liczba stron, które próbowano przydzielić

  • FAIL_VIRTUAL_RESERVE następuje liczba bajtów, które próbowano zarezerwować

  • FAIL_VIRTUAL_zatwierdzanie, a następnie przez liczbę bajtów były próbyzatwierdzanie

Jest ważne, aby zrozumieć, że zadanie wyzwolone błąd braku pamięci często nie jest zadanie, który spowodował błąd.Mało pamięci, chyba że przemijające zadania, jest zazwyczaj culmination wiele uruchomione zadania.W wyniku przy użyciu typowych bardzo przypadek błąd FAIL_PAGE_ALLOCATION, swojego dochodzenia musi podjąć trzymiesięcznej aktywności systemu.

Następny fragment cenne informacje dziennik błędów jest wyjściowego stanu pamięci.W zależności od awarii należy szukać pojedynczą strona wielostronicowego, wirtualny numerów zastrzeżonych lub zatwierdzonych urzędnicy sądowi poszczególnych pamięci.Identyfikowanie największych konsumentów pamięci jest klucz krok w kontynuuje badanie błędu.Zazwyczaj elementy zużywające najwięcej pamięci są następujące typy:

  • MEMORYCLERK_ * oznacza konfiguracja serwera lub obciążenia wymaga alokacji pamięci.To odpowiadających urzędnicy sądowi pamięci dla składników programu SQL Server i poszczególnych składników może mieć kilka pamięci urzędnicy sądowi.Aby uzyskać więcej informacji, zobacz sys.dm_os_memory_clerks (języka Transact-SQL).Czasami można zidentyfikować obciążenia, przyczyną problemu z urzędnicy sądowi pamięci, ale jest bardziej prawdopodobne, należy zbadać obiektów pamięci skojarzonych z urzędnicy sądowi, aby dowiedzieć się, co było przyczyną dużej ilości pamięci.

  • CACHESTORE_ *, USERSTORE_ * OBJECTSTORE_ * są typy pamięci podręcznej.Zużycie pamięci wysokiej przez bufor może oznaczać, że:

    • Pamięci przydzielonej z pamięci podręcznej, ale jeszcze nie jest wstawiany jako zapis może być eksmitowany.To jest bardzo podobny do MEMORYCLERK przypadek powyżej.

    • Wszystkie wpisy pamięci podręcznej są w użyciu, więc nie można wykluczyć.Może to być potwierdzone przez spojrzenie na sys.dm_os_memory_cache_counters i porównywania wartości entries_count kolumna i entries_in_use_count kolumna.

  • MEMORYCLERK_SQLQERESERVATIONS pokazuje, ile pamięci został zarezerwowany przez wykonanie kwerendy (QE), uruchomienie kwerendy z sortuje i sprzężeń.Błąd braku pamięci, gdy rezerwacje są zazwyczaj wysokie wskazuje błąd serwera.

Wyjściowego stanu pamięci dziennik błędów zostaną wyświetlone również puli pamięci, która jest wyczerpana.Pamięć brokerów dla każdej puli Pokaż dystrybucji pamięci między skradzionym (Kompilacja) buforowane i zarezerwowane (udzielone) pamięci.Numery dla trzech brokerów odpowiadać poprzednim pamięci obiektów skojarzonych z pamięci urzędnicy sądowi.Można sprawdzić, ile pamięci przydzielony dla puli z danego obiektu pamięci lub pracownicy przez wyodrębnianie informacji z pełnego automatyczna kopia zapasowa przy użyciu skryptu niestandardowego i sys.dm_os_memory_cache_entries dynamiczny widok zarządzania, który zawiera pool_id , każdy wpis jest skojarzona.

Należy skontaktować się z technicznej zebrać następujące informacje dla naszego personelu pomocy technicznej:

  • Dziennik błędów, pokazujący out błąd pamięci i wyjście stanu pamięci w czas błędu.

  • Wyjście z następujących instrukcji:

    dbcc memorystatus
    dbcc sqlperf(spinlockstats)
    select * from sys.dm_os_memory_clerks
    select * from sys.dm_os_wait_stats order by wait_type
    select * from sys.dm_os_waiting_tasks
    select * from sys.dm_os_ring_buffers where ring_buffer_type='RING_BUFFER_OOM'
    select * from sys.dm_os_ring_buffers where ring_buffer_type='RING_BUFFER_RESOURCE_MONITOR'
    select * from sys.dm_os_ring_buffers where ring_buffer_type='RING_BUFFER_MEMORY_BROKER'
    select * from sys.dm_os_memory_cache_clock_hands
    
  • Opcjonalnie wychodzących automatyczna kopia zapasowa pamięci zebrane z T8004.To minizrzutu będzie mieć cenne informacje, takie jak bufory ring i statystykę spinlock i oczekiwania.Można zresetować licznik automatyczna kopia zapasowa T8004 bez ponownego uruchamiania serwera, włączając T8004 wylogowania i ponownego.

Warunkami panującymi planu kwerend

W tym scenariuszu można podejrzewać, że kwerenda działa wolno z powodu planu kwerend warunkami panującymi.optymalizator kwerendy może generować planu kwerend warunkami panującymi, jeżeli nie uzyskuje wystarczająco dużo pamięci z powodu limitu braku pamięci w puli zasób.

Następujące akcje pomogą określić najlepsze ustawienia puli zasób:

  • Pobieranie danych z optymalizacje kwerendy na sekundę licznik, aby sprawdzić, czy grupa obciążenia ma dużą liczbę skompiluje kwerendy.

  • Pobieranie danych z warunkami panującymi planów/s licznik, aby zobaczyć, jeśli optymalizator kwerendy często produkujących warunkami panującymi planów.

Jeśli jeden z powyższych warunków, należy rozważyć zwiększenie limitu pamięci puli zasób.