Använda Event1644Reader.ps1 för att analysera LDAP-frågeprestanda i Windows Server
I den här artikeln beskrivs ett skript som hjälper till att analysera Active Directory-händelse-ID 1644 i Windows Server. Granska stegen för att använda skriptet och analysera sedan dina problem.
Ursprungligt KB-nummer: 3060643
Om Event1644Reader.ps1-skriptet
Active Directory-händelse-ID 1644 loggas i händelseloggen för Katalogtjänsten. Den här händelsen identifierar dyra, ineffektiva eller långsamma LDAP-sökningar (Lightweight Directory Access Protocol) som hanteras av Active Directory-domänkontrollanter. NTDS Allmänt händelse-ID 1644 kan filtreras för att registrera LDAP-sökningar i Directory Services-händelseloggen baserat på antalet objekt i Active Directory-databasen som besöktes, antalet objekt som returnerades eller körningstiden för LDAP-sökning på domänkontrollanten. Mer information om händelse-ID 1644 finns i Snabbkorrigering 2800945 lägger till prestandadata i Active Directory-händelseloggen.
Event1644Reader.ps1 är ett Windows PowerShell-skript som extraherar data från 1644-händelser som finns i sparade Directory Service-händelseloggar. Sedan importeras dessa data till en serie pivottabeller i ett Microsoft Excel-kalkylblad för att hjälpa administratörer att få insikter om de LDAP-arbetsbelastningar som hanteras av domänkontrollanterna och klienterna som genererar dessa frågor.
Hämta skriptet
Du kan hämta skriptet från blogginlägget Grundläggande infrastruktur och säkerhet Så här hittar du dyra, ineffektiva och långvariga LDAP-frågor i Active Directory.
Kommentar
Skriptet bifogas i blogginlägget med filnamnet Event1644Reader.zip
Ansvarsfriskrivning för Script Center
Exempelskripten stöds inte under microsofts standardsupportprogram eller -tjänst. Exempelskripten tillhandahålls som is utan garanti av något slag. Microsoft frånsäger sig ytterligare alla underförstådda garantier, inklusive, utan begränsning, underförstådda garantier för säljbarhet eller lämplighet för ett visst syfte. Hela risken som uppstår till följd av användning eller prestanda för exempelskripten och dokumentationen finns kvar hos dig. Under inga omständigheter ska Microsoft, dess författare eller någon annan som är involverad i skapandet, produktionen eller leveransen av skripten vara ansvariga för några som helst skador (inklusive, utan begränsning, skador för förlust av affärsvinster, avbrott i verksamheten, förlust av affärsinformation eller annan ekonomisk förlust) som uppstår på grund av användning av eller oförmåga att använda exempelskripten eller dokumentationen, även om Microsoft har informerats om risken för sådana skador.
Peer-stöd online
För online peer support, gå med i The Official Scripting Guys Forum! Om du vill ge feedback eller rapportera buggar i exempelskript startar du en ny diskussion på fliken Diskussioner för det här skriptet.
Så här använder du skriptet
Följ dessa steg för att bättre analysera de LDAP-frågor som samlas in i händelse-ID 1644:
Kontrollera att de domänkontrollanter som du felsöker samlar in förbättrade ** 1644-händelsemetadata.
Kommentar
Windows Server 2012 R2 lade till förbättrad 1644-händelseloggning genom att registrera varaktigheten för LDAP-frågor och andra metadata. Den förbättrade 1644-händelseloggningen återporterades till Windows Server 2012, Windows Server 2008 R2 och Windows Server 2008 med snabbkorrigeringar 2800945.
Ange värdet för följande fältteknikregisterpost till 5:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Diagnostics\Field Engineering
Kommentar
Om du anger fältteknikloggens verbositet till 5 loggas andra händelser i händelseloggen för katalogtjänsten. Återställ fälttekniken till standardvärdet 0 när du inte aktivt samlar in 1 644 händelser. (Den här åtgärden kräver ingen omstart.)
Om följande registerposter finns ändrar du värdena till önskat tröskelvärde i millisekunder. Om det inte finns någon viss registerpost skapar du en ny post med det namnet och anger sedan värdet till önskat tröskelvärde i millisekunder.
Registersökväg Datatyp Standardvärde HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters\Search Time Threshold (msecs) DWORD 30,000 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters\Expensive Search Results Threshold DWORD 10,000 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters\Inefficient Search Results Threshold DWORD 1 000 Kommentar
- När loggningsnivån Fältteknik är aktiverad och registerposten För söktid (msecs) inte används eller är inställd på 0 är standardvärdet för tidströskelvärdet 30 000 millisekunder. (Den här åtgärden kräver ingen omstart.)
- En strategi skulle vara att ange registervärdet för både ineffektivt tröskelvärde för sökresultat och registerinställningar för dyrt sökresultat och sedan fokusera på händelser som identifieras av tidsbegränsning för sökning (msecs). Börja med ett större värde som 100 millisekunder och minska sedan inkrementellt värdet när du optimerar de frågor som förekommer i din miljö.
- Event1644Reader.ps1 kan parsa händelser från flera domänkontrollanter. Konfigurera inställningarna för fältteknik, söktid, dyr och ineffektiv registernyckel på alla domänkontrollanter som du vill granska LDAP-sökningar på.
Ladda ned filen Event1644Reader.ps1 från Du kan hämta skriptet från blogginlägget Core Infrastructure and Security How to find expensive, inefficient and long running LDAP querys in Active Directory to the computer that will analyze saved Active Directory Service EVTX files that contain 1644 events .
Den här datorn bör ha Microsoft Excel 2010 eller en senare version installerad och bör ha tillräckligt med diskutrymme för att vara värd för de katalogtjänsthändelseloggar som skriptet parsar.
Kopiera sparade katalogtjänsthändelseloggar som innehåller 1 644 händelser från domänkontrollanterna där du aktiverade 1644-händelseloggning till 1644-analysdatorn.
Högerklicka på filen Event1644Reader.ps1 i Utforskaren i Windows och välj sedan Kör med PowerShell.
Följande är skärmbilden för det här steget:
Tryck på Y för att kringgå PowerShell-körningsprincipen efter behov.
Ange sökvägen till DE EVTX-filer som ska parsas.
När du ser uppmaningen som följande skärmbild vidtar du följande åtgärder:
- Tryck på Retur för att parsa alla EVTX-filer som finns i samma katalog som filen Enent1644Reader.ps1.
- Skriv sökvägen
drive:\path
som innehåller DE EVTX-filer som ska parsas.
Kommentar
Event1644Reader.ps1 parsar 1644 händelser i alla up-level-katalogtjänsthändelseloggar som finns i målsökvägen varje gång skriptet körs.
Öppna kalkylbladet för att granska data och gå igenom serien med flikar och spara sedan Excel-kalkylbladet efter behov. Mer information om flikarna i kalkylbladet finns i genomgången av Excel-kalkylbladet som skapades av 1644Reder.ps1 .
Kommentar
*.csv filer som skapas av verktyget tas inte bort automatiskt. Överväg att rensa *.csv filer när undersökningen är klar.
Mer information
Genomgång av Excel-kalkylbladet som skapas av Event1644Reader.ps1
Event1644Reader.ps1 extraherar metadata från 1644 händelser i sparade Directory Service-händelseloggar och importerar dessa data till en serie flikar i ett Microsoft Excel-kalkylblad.
I följande tabell sammanfattas de data som finns på varje flik:
Tabb | Beskrivning |
---|---|
RawData | Varje datafält som samlas in av händelse-ID 1644 importeras till diskreta kolumner. Datafiltrering är automatiskt aktiverat så att du kan sortera eller filtrera på valfri kolumnrubrik. Om 1644-händelseloggar från flera domänkontrollanter finns i samma katalog som PowerShell-skriptet eller den administratörsangivna katalogen använder du filter för att visa LDAP-frågor som riktar sig till specifika domänkontrollanter. |
Top_StartingNode | Innehåller en sorterad lista över de katalogpartitioner som är mål för LDAP-frågor i ett visst exempel. Om de flesta frågor inträffar i en enda partition (schema, konfiguration eller domän) kan du överväga att lägga till partitionen som ett filter i de återstående pivottabellerna. Detaljerad information exponerar de översta filtren (till exempel LDAP-frågan), klient-IP-adresser som utfärdade dessa frågor samt datum- och tidsstämplar för dessa frågor. |
Top_Callers | Visar en lista över klient-IP-adresser som utfärdade LDAP-frågor i fallande antal sökningar med procentandel av totalsumman. Procentandelen löpande summa hjälper dig att identifiera de främsta anroparna. (Det vill säga att de 10 eller 20 främsta anroparna kanske genererar 80 procent av frågevolymen, förutsatt att för många anrop är ditt problem). Detaljerad information exponerar filter och datum- och tidssteg som varje klientutfärdad LDAP-fråga i ett visst exempel. |
Top_Filters | Visar de vanligaste LDAP-frågorna i fallande volymordning. Detta inkluderar genomsnittlig söktid. Detaljerad information visar LDAP-klientens IP-adress och datum och tid när varje fråga skickades. |
TotalSearchTime efter uppringare | Visar en lista över klientens IP-adresser i fallande ordning efter total söktid för alla LDAP-frågor i exemplet. Detaljerad information identifierar LDAP-frågorna och datum och tid när varje fråga utfärdades. |
TotalSearchTime efter filter | Visar en lista över LDAP-frågor i fallande ordning efter total söktid. Detaljerad information visar LDAP-klientens IP-adress och datum och tid när varje matchande fråga skickades. |
Rangordning för söktid | Visar antalet LDAP-frågor som har inträffat i tidsbaserade kvartar. Långsammare frågor är dåliga. Snabbare frågor är bra om de inte utfärdas för ofta. Microsoft Exchange vill att LDAP-frågor som utfärdas av Exchange-servrar ska lösas om 50 millisekunder eller mindre. Så den första kvartilgruppen fokuserar på den tiden "bucket". |
Tom pivot | Det här är en tom pivottabell som du kan ändra efter behov för att visa specifika data för ditt scenario. |
Scenarioanalys
Om LDAP-frågor är långsamma, eller om processoranvändningen är hög på domänkontrollanter, kan detta orsakas av överdrivet utfärdade frågor, ineffektiva frågor, någon kombination av dessa frågor, atq-poolöverbelastning (Asynkron trådkö) eller massor av ändringsmeddelanden.
Om klienter utfärdar dyra, ineffektiva eller många LDAP-frågor använder du Event1644Reader.ps1 för att samla in data på domänkontrollanterna för att identifiera klienternas IP-adresser. Mappa sedan sådana frågor till process-ID, processnamn eller det anropande programmet på klientdatorerna.
I följande tabell visas möjliga optimeringar för det här problemet.
Optimering/minskning | Sammanfattning |
---|---|
Stoppa den överdrivna arbetsbelastningen. | Om många eller LDAP-frågor orsakar tjänststopp fokuserar du på de främsta anropande klienterna och arbetar för att identifiera och eliminera källan till den överdrivna arbetsbelastningen. Möjliga alternativ för att identifiera program är att använda PROCMON, ETL/ETW-spårning och felsökningsanalys för att identifiera det program som genererar LDAP-frågor på klienten. En annan strategi är att använda en divide-by-two-metod för att antingen toppa tjänster eller ta bort program som genererar LDAP-frågor. De utfärdade frågorna kan blanda in det anropande programmet eller processen. |
Installera en uppdaterad LDAP-frågeoptimerare. | Windows Server 2012 R2 innehåller en uppdaterad LDAP-frågeoptimerare som förbättrar prestandan för de flesta frågor. Delmängder av Windows Server 2012 R2 backporteras till Windows Server 2008 R2 och Windows Server 2012 i snabbkorrigeringar 2862304. |
Kontrollera att klienter skickar frågor till platsoptimala domänkontrollanter. | Genom att skicka LDAP-frågor via WAN introduceras nätverksfördröjning i leveransen av LDAP-frågan till domänkontrollanten och dess svar till klienten. Kontrollera att Active Directory-platser och undernätsdefinitioner finns för klient- och serverdatorer i Active Directory. Kontrollera att program inte har hårdkodade referenser till fjärrplatsdomänkontrollanter eller skrivbara domänkontrollanter endast när platsoptimala domänkontrollanter finns. |
Arbeta med programutvecklare för att minska frekvensen för frågor som utfärdas. Detta inkluderar användningen av cachelagring. | Även effektivt utfärdade frågor kan slå ned en domänkontrollant av lämplig storlek och konfigurerad om frågor utfärdas för ofta. Program kan behöva begränsa sina frågevolym- eller cachefrågeresultat för att minska nätverks-, LDAP- och CPU-belastningen. |
Optimera LDAP-frågan så att den körs snabbare. | Frågesyntaxen kan behöva omstruktureras för att köras snabbare. Om du flyttar frågeelement till vänster eller höger i filtret kan prestandan förbättras. Om du lägger till ett dubbelt "inte" kan frågeprestandan förbättras. Överväg att minska antalet objekt som besöks genom att starta frågor lägre i trädet. Minska antalet attribut som returneras av frågor. |
Lägg till index i Active Directory-attribut efter behov. | Om du lägger till index kan du förbättra frågeprestandan. Detta har sidoeffekten att öka databasstorleken och kan tillfälligt fördröja Active Directory-replikeringen under indexet. |
Kontrollera om det finns ett kodfel i frågeoptimeraren och andra komponenter. | Defekter i LDAP-frågeoptimeraren och andra komponenter kan minska dataflödet. |
Kända problem
Värdena i Excel-kalkylbladet visas inte eller återges på rätt sätt på datorer som använder icke-engelska språk.
Detta inträffar till exempel på en dator när Cmdleten Get-Culture Windows PowerShell anger den regionala inställningen enligt följande:
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)
I det här fallet återges siffror i Excel-kalkylbladet som i följande skärmbild:
Lös problemet genom att ändra decimaltecknet till en punkt (.) i objektet Regioninställningar i Kontrollpanelen.
Mer information om LDAP-frågor finns i följande blogg: Så här hittar du dyra, ineffektiva och långvariga LDAP-frågor i Active Directory