Udostępnij za pośrednictwem


Używanie zdarzenia Event1644Reader.ps1 do analizowania wydajności zapytań LDAP w systemie Windows Server

W tym artykule opisano skrypt, który ułatwia analizowanie identyfikatora zdarzenia usługi Active Directory 1644 w systemie Windows Server. Zapoznaj się z krokami, aby użyć skryptu , a następnie przeanalizuj problemy.

Oryginalny numer KB: 3060643

Informacje o skryptie Event1644Reader.ps1

Identyfikator zdarzenia usługi Active Directory 1644 jest rejestrowany w dzienniku zdarzeń usługi katalogowej. To zdarzenie identyfikuje kosztowne, nieefektywne lub powolne wyszukiwanie protokołu LDAP (Lightweight Directory Access Protocol), które są obsługiwane przez kontrolery domeny usługi Active Directory. Identyfikator zdarzenia ogólnego NTDS 1644 można filtrować w celu rejestrowania wyszukiwań LDAP w dzienniku zdarzeń usług katalogowych na podstawie liczby obiektów w odwiedzonej bazie danych usługi Active Directory, liczby zwróconych obiektów lub czasu wykonywania wyszukiwania LDAP na kontrolerze domeny. Aby uzyskać więcej informacji na temat identyfikatora zdarzenia 1644, zobacz Poprawka 2800945 dodaje dane wydajności do dziennika zdarzeń usługi Active Directory.

Event1644Reader.ps1 to skrypt programu Windows PowerShell, który wyodrębnia dane ze zdarzeń 1644 hostowanych w zapisanych dziennikach zdarzeń usługi katalogowej. Następnie importuje te dane do serii tabel przestawnych w arkuszu kalkulacyjnym programu Microsoft Excel, aby ułatwić administratorom uzyskanie szczegółowych informacji o obciążeniach LDAP, które są obsługiwane przez kontrolery domeny i klientów generujących te zapytania.

Jak uzyskać skrypt

Skrypt można uzyskać z wpisu w blogu Podstawowa infrastruktura i zabezpieczenia Jak znaleźć kosztowne, nieefektywne i długotrwałe zapytania LDAP w usłudze Active Directory.

Uwaga 16.

Skrypt jest dołączany we wpisie w blogu z nazwą pliku Event1644Reader.zip

Zastrzeżenie centrum skryptów
Przykładowe skrypty nie są obsługiwane w żadnym standardowym programie lub usłudze pomocy technicznej firmy Microsoft. Przykładowe skrypty są dostarczane w formacie AS IS bez gwarancji jakiegokolwiek rodzaju. Firma Microsoft w dalszym ciągu nie udziela wszelkich domniemanych gwarancji, w tym, bez ograniczeń, żadnych domniemanych gwarancji możliwości handlowych lub przydatności do określonego celu. Całe ryzyko wynikające z użycia lub wydajności przykładowych skryptów i dokumentacji pozostaje dla Ciebie. W żadnym wypadku firma Microsoft, jej autorzy ani ktokolwiek inny zaangażowany w tworzenie, produkcję lub dostarczanie skryptów ponosi odpowiedzialność za wszelkie szkody (w tym, bez ograniczeń, szkody za utratę zysków biznesowych, przerw w działalności biznesowej, utratę informacji biznesowych lub inną stratę pieniężną) wynikające z używania lub niezdolności do korzystania z przykładowych skryptów lub dokumentacji, nawet jeśli firma Microsoft została poinformowana o możliwości wystąpienia takich szkód.

Obsługa komunikacji równorzędnej online
Aby uzyskać pomoc techniczną dla komunikacji równorzędnej online, dołącz do oficjalnego forum facetów skryptów! Aby przekazać opinię lub zgłosić usterki w przykładowych skryptach, rozpocznij nową dyskusję na karcie Dyskusje dla tego skryptu.

Jak używać skryptu

Aby lepiej przeanalizować zapytania LDAP przechwycone w identyfikatorze zdarzenia 1644, wykonaj następujące kroki:

  1. Upewnij się, że kontrolery domeny, które są rozwiązywane podczas rozwiązywania problemów z przechwytywaniem rozszerzonych metadanych zdarzeń ** 1644.

    Uwaga 16.

    System Windows Server 2012 R2 dodał ulepszone rejestrowanie zdarzeń 1644, rejestrując czas trwania zapytań LDAP i innych metadanych. Ulepszone rejestrowanie zdarzeń 1644 zostało przywrócone do systemu Windows Server 2012, Windows Server 2008 R2 i Windows Server 2008 przez poprawkę 2800945.

  2. Ustaw wartość następującego wpisu rejestru inżynierii pól na 5: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Diagnostics\Field Engineering

    Uwaga 16.

    Ustawienie szczegółowości dziennika inżynierii pól na 5 spowoduje zarejestrowanie innych zdarzeń w dzienniku zdarzeń usługi katalogowej. Zresetuj inżynierię pól z powrotem do wartości domyślnej 0, jeśli nie zbierasz aktywnie 1644 zdarzeń. (Ta akcja nie wymaga ponownego uruchomienia).

  3. Jeśli istnieją następujące wpisy rejestru, zmień wartości na żądany próg w milisekundach. Jeśli określony wpis rejestru nie istnieje, utwórz nowy wpis o tej nazwie, a następnie ustaw jego wartość na żądany próg w milisekundach.

    Ścieżka rejestru Typ danych Domyślna wartość
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters\Search Time Threshold (msecs) DWORD 30,000
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters\Drogi próg wyników wyszukiwania DWORD 10,000
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters\Nieefektywny próg wyników wyszukiwania DWORD 1000

    Uwaga 16.

    • Gdy poziom rejestrowania inżynierii pól jest włączony, a wpis rejestru Próg czasu wyszukiwania (msecs) nie jest używany lub jest ustawiony na 0, wartość domyślna progu czasu to 30 000 milisekund. (Ta akcja nie wymaga ponownego uruchomienia).
    • Jedną ze strategii byłoby ustawienie wartości rejestru zarówno dla niewydajnego progu wyników wyszukiwania, jak i ustawienia rejestru kosztownych wyników wyszukiwania, a następnie skoncentrować się na zdarzeniach, które są identyfikowane przez blokadę czasu wyszukiwania (msecs). Zacznij od większej wartości, takiej jak 100 milisekund, a następnie przyrostowo zmniejsz wartość podczas optymalizowania zapytań występujących w środowisku.
    • Event1644Reader.ps1 może analizować zdarzenia z wielu kontrolerów domeny. Skonfiguruj ustawienia inżynierii pól, czasu wyszukiwania, kosztownych i nieefektywnych ustawień klucza rejestru na wszystkich kontrolerach domeny, na których chcesz przejrzeć wyszukiwania LDAP.
  4. Pobierz plik Event1644Reader.ps1 z witryny Możesz uzyskać skrypt z wpisu w blogu infrastruktury podstawowej i zabezpieczeń Jak znaleźć kosztowne, nieefektywne i długotrwałe zapytania LDAP w usłudze Active Directory na komputerze, na którym będą analizowane zapisane pliki EVTX usługi Active Directory zawierające 1644 zdarzeń.

    Ten komputer powinien mieć zainstalowany program Microsoft Excel 2010 lub nowszą wersję i powinien mieć wystarczającą ilość miejsca na dysku do hostowania dzienników zdarzeń usługi katalogowej, które skrypt przeanalizuje.

  5. Skopiuj zapisane dzienniki zdarzeń usługi katalogowej zawierające 1644 zdarzeń z kontrolerów domeny, w których włączono rejestrowanie zdarzeń 1644 na komputerze analizy 1644.

  6. W Eksploratorze Windows kliknij prawym przyciskiem myszy plik Event1644Reader.ps1, a następnie wybierz polecenie Uruchom przy użyciu programu PowerShell.

    Poniżej przedstawiono zrzut ekranu przedstawiający ten krok:

    Kliknij prawym przyciskiem myszy plik Event1644Reader.ps1, a następnie wybierz polecenie Uruchom przy użyciu programu PowerShell.

  7. Naciśnij Y, aby pominąć zasady wykonywania programu PowerShell zgodnie z wymaganiami.

  8. Określ ścieżkę plików EVTX, które mają być analizowane.

  9. Po wyświetleniu monitu jako poniższego zrzutu ekranu wykonaj następujące czynności:

    Polecenie programu PowerShell dotyczące uruchamiania pliku Event1644Reader.ps1.

    • Naciśnij Enter, aby przeanalizować wszystkie pliki EVTX znajdujące się w tym samym katalogu co plik Enent1644Reader.ps1.
    • Wpisz ścieżkę drive:\path zawierającą pliki EVTX, które mają być analizowane.

    Uwaga 16.

    Event1644Reader.ps1 analizuje zdarzenia 1644 we wszystkich dziennikach zdarzeń usługi katalogowej najwyższego poziomu, które znajdują się w ścieżce docelowej za każdym razem, gdy skrypt jest uruchamiany.

  10. Otwórz arkusz, aby przejrzeć dane i przejść przez serię kart, a następnie zapisz arkusz kalkulacyjny programu Excel zgodnie z potrzebami. Aby uzyskać więcej informacji na temat kart w arkuszu, zobacz sekcję Przewodnik po arkuszu kalkulacyjnym programu Excel utworzonym przez 1644Reder.ps1 .

    Uwaga 16.

    *.csv pliki tworzone przez narzędzie nie są automatycznie usuwane. Rozważ przeczyszczenie *.csv plików po zakończeniu badania.

Więcej informacji

Przewodnik po arkuszu kalkulacyjnym programu Excel utworzonym przez element Event1644Reader.ps1

Event1644Reader.ps1 wyodrębnia metadane z 1644 zdarzeń w zapisanych dziennikach zdarzeń usługi katalogowej i importuje te dane do serii arkuszy z kartami w arkuszu kalkulacyjnym programu Microsoft Excel.

Poniższa tabela zawiera podsumowanie danych zawartych na każdej karcie:

Karta opis
RawData Każde pole danych przechwycone przez identyfikator zdarzenia 1644 jest importowane do kolumn dyskretnych. Filtrowanie danych jest automatycznie włączone, dzięki czemu można sortować lub filtrować według dowolnego nagłówka kolumny. Jeśli dzienniki zdarzeń 1644 z wielu kontrolerów domeny znajdują się w tym samym katalogu co skrypt programu PowerShell lub katalog określony przez administratora, użyj filtrów do wyświetlania zapytań LDAP przeznaczonych dla określonych kontrolerów domeny.
Top_StartingNode Zawiera posortowaną listę partycji katalogu, które są objęte zapytaniami LDAP w danym przykładzie. Jeśli większość zapytań występuje w jednej partycji (schemat, konfiguracja lub domena), rozważ dodanie tej partycji jako filtru w pozostałych tabelach przestawnych. Szczegóły przeglądania szczegółowego uwidacznia górne filtry (takie jak zapytanie LDAP), adresy IP klienta, które wystawiły te zapytania, oraz sygnatury daty i godziny dla tych zapytań.
Top_Callers Wyświetla listę adresów IP klienta, które wystawiły zapytania LDAP w kolejności malejącej liczby wyszukiwań z procentem sumy końcowej. Procent sumy bieżącej pomaga zidentyfikować wierzchołków. (Oznacza to, że 10 lub 20 pierwszych wywołań może generować 80 procent woluminu zapytania, zakładając, że zbyt wiele wywołań jest problemem). Szczegóły przeglądania szczegółowego uwidacznia filtry i kroki daty i godziny, które każdy klient wystawił zapytania LDAP w danym przykładzie.
Top_Filters Wyświetla listę najczęściej wystawianych zapytań LDAP w kolejności malejącej woluminu. Obejmuje to średni czas wyszukiwania. Szczegóły przeglądania szczegółowego uwidacznia adres IP klienta LDAP oraz datę i godzinę przesłania każdego zapytania.
TotalSearchTime by Callers Wyświetla listę adresów IP klienta w kolejności malejącej całkowitego czasu wyszukiwania we wszystkich zapytaniach LDAP w przykładzie. Szczegóły przeglądania szczegółowego identyfikują zapytania LDAP oraz datę i godzinę wystawienia każdego zapytania.
TotalSearchTime według filtrów Wyświetla listę zapytań LDAP w kolejności malejącej całkowitego czasu wyszukiwania. Szczegóły przeglądania szczegółowego uwidacznia adres IP klienta LDAP oraz datę i godzinę przesłania każdego pasującego zapytania.
Rangi czasu wyszukiwania Przedstawia liczbę zapytań LDAP, które wystąpiły w kwartylach opartych na czasie. Wolniejsze zapytania są złe. Szybsze zapytania są dobre, jeśli nie są wystawiane zbyt często. Program Microsoft Exchange chce, aby zapytania LDAP wystawiane przez serwery programu Exchange zostały rozwiązane w ciągu 50 milisekund lub mniej. Tak więc pierwsza grupa kwartylu koncentruje się na tym czasie "zasobnik".
Pusty element przestawny Jest to pusta tabela przestawna, którą można zmienić zgodnie z potrzebami, aby pokazać konkretne dane dla danego scenariusza.

Analiza scenariuszy

Jeśli zapytania LDAP są powolne lub wysokie użycie procesora CPU na kontrolerach domeny, może to być spowodowane nadmiernie wystawionymi zapytaniami, nieefektywnymi zapytaniami, niektórymi kombinacjami tych zapytań, wyczerpaniem puli asynchronicznej kolejki wątków (ATQ) lub wieloma powiadomieniami o zmianach.

Jeśli klienci wystawiają kosztowne, nieefektywne lub wiele zapytań LDAP, użyj zdarzenia Event1644Reader.ps1, aby zebrać dane na kontrolerach domeny, aby zidentyfikować adresy IP klientów. Następnie zamapuj takie zapytania na identyfikator procesu, nazwę procesu lub aplikację wywołującą na komputerach klienckich.

W poniższej tabeli wymieniono możliwe optymalizacje dla tego problemu.

Optymalizacja/środki zaradcze Streszczenie
Zatrzymaj nadmierne obciążenie. Jeśli wiele lub zapytania LDAP powodują zatrzymanie usługi, skoncentruj się na klientach wywołujących i pracuj, aby zidentyfikować i wyeliminować źródło nadmiernego obciążenia.

Możliwe opcje identyfikowania aplikacji obejmują użycie śledzenia PROCMON, ETL/ETW i analizy debugowania w celu zidentyfikowania aplikacji, która generuje zapytania LDAP na kliencie. Inną strategią jest użycie podejścia podzielonego przez dwa usług lub usuwania aplikacji generujących zapytania LDAP. Wystawione zapytania mogą mieć wpływ na wywoływaną aplikację lub proces.
Zainstaluj zaktualizowany optymalizator zapytań LDAP. System Windows Server 2012 R2 zawiera zaktualizowany optymalizator zapytań LDAP, który zwiększa wydajność większości zapytań. Podzestawy systemu Windows Server 2012 R2 są przywracane do systemów Windows Server 2008 R2 i Windows Server 2012 w poprawce 2862304.
Upewnij się, że klienci przesyłają zapytania do kontrolerów domeny optymalnej lokacji. Wysyłanie zapytań LDAP w sieci WAN powoduje opóźnienie sieci w dostarczaniu zapytania LDAP do kontrolera domeny i jego odpowiedzi na klienta. Upewnij się, że w usłudze Active Directory istnieją lokacje i definicje podsieci dla komputerów klienckich i serwerowych w usłudze Active Directory.

Upewnij się, że aplikacje nie mają trwale zakodowanych odwołań do kontrolerów domeny lokacji zdalnej lub kontrolerów domeny zapisywalnych do odczytu tylko wtedy, gdy istnieją optymalne kontrolery domeny lokacji.
We współpracy z deweloperami oprogramowania zmniejsz częstotliwość wydawania zapytań. Obejmuje to użycie buforowania. Nawet wydajnie wystawiane zapytania mogą pobić odpowiednio rozmiar i skonfigurowany kontroler domeny, jeśli zapytania są wystawiane zbyt często.
Aplikacje mogą wymagać ograniczenia liczby zapytań lub wyników zapytań pamięci podręcznej w celu zmniejszenia obciążenia sieci, protokołu LDAP i procesora CPU.
Zoptymalizuj zapytanie LDAP, aby wykonać je szybciej. W celu szybszego wykonywania składni zapytań może być konieczne ponowne przeprowadzenie struktury.
Przeniesienie elementów zapytania do lewej lub prawej strony filtru może zwiększyć wydajność.
Dodanie podwójnego "nie" może zwiększyć wydajność zapytań.
Rozważ zmniejszenie liczby obiektów, które są odwiedzane, uruchamiając zapytania niższe w drzewie.
Zmniejsz liczbę atrybutów zwracanych przez zapytania.
Dodaj indeksy do atrybutów usługi Active Directory zgodnie z potrzebami. Dodawanie indeksów może zwiększyć wydajność zapytań. Ma to wpływ uboczny na zwiększenie rozmiaru bazy danych i może tymczasowo opóźnić replikację usługi Active Directory podczas kompilacji indeksu.
Ustal, czy w optymalizatorze zapytań i innych składnikach istnieje usterka kodu. Wady optymalizatora zapytań LDAP i innych składników mogą zmniejszyć przepływność.

Znany problem

Wartości w arkuszu kalkulacyjnym programu Excel nie są wyświetlane ani renderowane odpowiednio na komputerach korzystających z języków innych niż angielski.

Na przykład występuje to na komputerze, gdy polecenie cmdlet Get-Culture środowiska Windows PowerShell wskazuje ustawienie regionalne w następujący sposób:

PS C:\Windows\System32\WindowsPowerShell\v1.0> Get-Culture  
LCID Name DisplayName  
---- ---- -----------
1031 de-DE German (Germany)

PS C:\Windows\System32\WindowsPowerShell\v1.0> Get-UICulture

LCID Name DisplayName  
---- ---- -----------
1033 en-US English (United States)

W takiej sytuacji liczby w arkuszu kalkulacyjnym programu Excel są renderowane tak jak na poniższym zrzucie ekranu:

Liczby w problemie z arkuszem kalkulacyjnym programu Excel.

Aby rozwiązać ten problem, zmień symbol dziesiętny na kropkę (.) w elemencie Ustawienia regionu w Panel sterowania.

Aby uzyskać więcej informacji na temat zapytań LDAP, zobacz następujący blog: Jak znaleźć kosztowne, nieefektywne i długotrwałe zapytania LDAP w usłudze Active Directory