Gebruik Event1644Reader.ps1 om de prestaties van LDAP-query's in Windows Server te analyseren
In dit artikel wordt een script beschreven dat helpt bij het analyseren van Active Directory-gebeurtenis-id 1644 in Windows Server. Bekijk de stappen voor het gebruik van het script en analyseer vervolgens uw problemen.
Origineel KB-nummer: 3060643
Over het Event1644Reader.ps1-script
Active Directory-gebeurtenis-id 1644 wordt vastgelegd in het gebeurtenislogboek van de Directory-service. Deze gebeurtenis identificeert dure, inefficiënte of trage LDAP-zoekopdrachten (Lightweight Directory Access Protocol) die worden uitgevoerd door Active Directory-domeincontrollers. Algemene NTDS-gebeurtenis-id 1644 kan worden gefilterd om LDAP-zoekopdrachten vast te leggen in het Gebeurtenislogboek van Directory Services op basis van het aantal objecten in de Active Directory-database dat is bezocht, het aantal objecten dat is geretourneerd of de uitvoeringstijd van ldap-zoekopdrachten op de domeincontroller. Zie Hotfix 2800945 voegt prestatiegegevens toe aan het Active Directory-gebeurtenislogboek voor meer informatie over gebeurtenis-id 1644.
Event1644Reader.ps1 is een Windows PowerShell-script waarmee gegevens worden geëxtraheerd uit 1644-gebeurtenissen die worden gehost in opgeslagen Gebeurtenislogboeken van directoryservice. Vervolgens worden deze gegevens geïmporteerd in een reeks draaitabellen in een Microsoft Excel-spreadsheet om beheerders inzicht te geven in de LDAP-workloads die worden onderhouden door de domeincontrollers en clients die deze query's genereren.
Het script ophalen
U kunt het script verkrijgen in het blogbericht Over het vinden van dure, inefficiënte en langlopende LDAP-query's in Active Directory.
Opmerking
Het script is bijgevoegd bij het blogbericht met de bestandsnaam Event1644Reader.zip
Disclaimer van scriptcentrum
De voorbeeldscripts worden niet ondersteund onder een standaardondersteuningsprogramma of -service van Microsoft. De voorbeeldscripts worden zonder enige garantie ONGEWIJZIGD verstrekt. Microsoft wijst alle impliciete garanties met inbegrip van, maar niet beperkt tot, impliciete garanties van verkoopbaarheid en geschiktheid voor een bepaald doel af. Het risico dat ontstaat als gevolg van het gebruik of prestaties van de voorbeeldscripts ligt geheel bij u. In geen geval kan Microsoft, haar auteurs of anderen die bij het maken, produceren of leveren van de scripts zijn betrokken, aansprakelijk worden gehouden voor enige schade om welke reden dan ook (met inbegrip van maar niet beperkt tot schade door verlies van bedrijfswinsten, belemmering van de bedrijfsuitvoering, verlies van bedrijfsinformatie of andere geldelijke verliezen) voortvloeiend uit het gebruik of de onmogelijkheid van het gebruik van de voorbeeldscripts, zelfs als Microsoft op de hoogte is gesteld van de mogelijkheid van dergelijke schade.
Online peerondersteuning
Voor online peerondersteuning kunt u deelnemen aan het Officiële Scripting Guys Forum! Als u feedback wilt geven of fouten in voorbeeldscripts wilt melden, start u een nieuwe discussie op het tabblad Discussies voor dit script.
Het script gebruiken
Voer de volgende stappen uit om de LDAP-query's die zijn vastgelegd in gebeurtenis-id 1644 beter te analyseren:
Zorg ervoor dat de domeincontrollers waarvoor u problemen wilt oplossen, verbeterde metagegevens van ** 1644-gebeurtenissen vastleggen.
Opmerking
Windows Server 2012 R2 heeft verbeterde 1644-gebeurtenislogboekregistratie toegevoegd door de duur van LDAP-query's en andere metagegevens op te nemen. De verbeterde logboekregistratie van 1644-gebeurtenissen is via hotfix 2800945 backported naar Windows Server 2012, Windows Server 2008 R2 en Windows Server 2008.
Stel de waarde van de volgende field engineering-registervermelding in op 5:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Diagnostics\Field Engineering
Opmerking
Als u de uitgebreidheid van het logboek voor veldtechniek instelt op 5, worden andere gebeurtenissen geregistreerd in het gebeurtenislogboek van de directoryservice. Stel veldtechniek terug op de standaardwaarde 0 wanneer u niet actief 1644-gebeurtenissen verzamelt. (Voor deze actie hoeft u niet opnieuw te starten.)
Als de volgende registervermeldingen bestaan, wijzigt u de waarden in de gewenste drempelwaarde in milliseconden. Als een bepaalde registervermelding niet bestaat, maakt u een nieuwe vermelding met die naam en stelt u de waarde vervolgens in op de gewenste drempelwaarde in milliseconden.
Registerpad Gegevenstype: Standaardwaarde 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 Opmerking
- Wanneer het logboekregistratieniveau field engineering is ingeschakeld en de registervermelding Voor zoektijd (msecs) niet wordt gebruikt of is ingesteld op 0, is de standaardwaarde van de tijdsdrempel 30.000 milliseconden. (Voor deze actie hoeft u niet opnieuw te starten.)
- Een strategie zou zijn om de registerwaarde in te stellen voor zowel de registerinstellingen Drempelwaarde voor inefficiënte zoekresultaten als Dure drempelwaarde voor zoekresultaten, en vervolgens te focussen op gebeurtenissen die worden geïdentificeerd door zoektijd bewaring (msecs). Begin met een grotere waarde, zoals 100 milliseconden, en verlaag de waarde vervolgens stapsgewijs naarmate u de query's in uw omgeving optimaliseert.
- Event1644Reader.ps1 kunt gebeurtenissen van meerdere domeincontrollers parseren. Configureer de instellingen voor field engineering, zoektijd, dure en inefficiënte registersleutels op alle domeincontrollers waarop u LDAP-zoekopdrachten wilt controleren.
Download het Event1644Reader.ps1-bestand van U kunt het script verkrijgen in de blogpost Core Infrastructure and Security How to find dure, inefficiënte en langlopende LDAP-query's in Active Directory naar de computer die opgeslagen EVTX-bestanden met 1644-gebeurtenissen in Active Directory analyseert.
Op deze computer moet Microsoft Excel 2010 of een latere versie zijn geïnstalleerd en er moet voldoende schijfruimte zijn om de gebeurtenislogboeken van de directoryservice te hosten die door het script worden geparseerd.
Kopieer opgeslagen gebeurtenislogboeken van directoryservice die 1644 gebeurtenissen bevatten van de domeincontrollers waarop u 1644-gebeurtenislogboeken hebt ingeschakeld naar de 1644-analysecomputer.
Klik in Windows Verkenner met de rechtermuisknop op het Event1644Reader.ps1-bestand en selecteer uitvoeren met PowerShell.
Hier volgt de schermopname voor deze stap:
Druk op Y om het PowerShell-uitvoeringsbeleid zo nodig te omzeilen.
Geef het pad op van de EVTX-bestanden die moeten worden geparseerd.
Wanneer u de prompt ziet als de volgende schermopname, voert u de volgende acties uit:
- Druk op Enter om alle EVTX-bestanden te parseren die zich in dezelfde map bevinden als het Enent1644Reader.ps1-bestand.
- Typ het
drive:\path
pad met de EVTX-bestanden die moeten worden geparseerd.
Opmerking
Event1644Reader.ps1 parseert 1644 gebeurtenissen in alle up-level directoryservicegebeurtenislogboeken die zich in het doelpad bevinden telkens wanneer het script wordt uitgevoerd.
Open het werkblad om gegevens te bekijken en door de reeks tabbladen te lopen en sla het Excel-werkblad vervolgens zo nodig op. Zie de sectie Overzicht van het Excel-werkblad dat is gemaakt door 1644Reder.ps1 voor meer informatie over de tabbladen in het werkblad.
Opmerking
*.csv bestanden die door het hulpprogramma zijn gebouwd, worden niet automatisch verwijderd. U kunt *.csv bestanden opschonen nadat uw onderzoek is voltooid.
Meer informatie
Overzicht van het Excel-werkblad dat is gemaakt door Event1644Reader.ps1
Event1644Reader.ps1 extraheert metagegevens uit 1644-gebeurtenissen in opgeslagen Gebeurtenislogboeken van Directory Service en importeert deze gegevens in een reeks werkbladen met tabbladen in een Microsoft Excel-spreadsheet.
De volgende tabel bevat een overzicht van de gegevens die zich op elk tabblad bevinden:
Tab | Omschrijving |
---|---|
RawData | Elk gegevensveld dat wordt vastgelegd door gebeurtenis-id 1644, wordt geïmporteerd in afzonderlijke kolommen. Gegevensfiltering is automatisch ingeschakeld, zodat u elke kolomkop kunt sorteren of filteren. Als 1644-gebeurtenislogboeken van meerdere domeincontrollers zich in dezelfde map bevinden als het PowerShell-script of de door de beheerder opgegeven map, gebruikt u filters om LDAP-query's weer te geven die zijn gericht op specifieke domeincontrollers. |
Top_StartingNode | Biedt een gesorteerde lijst van de mappartities waarop LDAP-query's in een bepaald voorbeeld zijn gericht. Als de meeste query's worden uitgevoerd in één partitie (schema, configuratie of domein), kunt u overwegen om die partitie toe te voegen als filter in de resterende draaitabellen. Drillthrough-details geven de belangrijkste filters weer (zoals de LDAP-query), de client-IP's die deze query's hebben uitgegeven en de datum- en tijdstempels voor deze query's. |
Top_Callers | Een lijst met CLIENT-IP-adressen die LDAP-query's hebben uitgegeven in aflopende volgorde van het aantal zoekopdrachten met een percentage van het eindtotaal. Het percentage van het lopende totaal helpt u bij het identificeren van de belangrijkste bellers. (Dat wil dus dat de top 10 of 20 bellers mogelijk 80 procent van het queryvolume genereren, ervan uitgaande dat te veel aanroepen uw probleem zijn). Drillthrough-details bevatten filters en datum- en tijdstappen die elke door de client uitgegeven LDAP-query's in een bepaald voorbeeld uitvoert. |
Top_Filters | Geeft een lijst weer van de meest voorkomende LDAP-query's in aflopende volumevolgorde. Dit omvat de gemiddelde zoektijd. Drillthrough-details geven het IP-adres van de LDAP-client weer en de datum en tijd waarop elke query is verzonden. |
TotalSearchTime door bellers | Hiermee geeft u de IP-adressen van clients weer in aflopende volgorde van de totale zoektijd voor alle LDAP-query's in het voorbeeld. Drillthrough-details identificeert de LDAP-query's en de datum en tijd waarop elke query is uitgegeven. |
TotalSearchTime op filters | Toont LDAP-query's in aflopende volgorde van de totale zoektijd. Drillthrough-details geven het IP-adres van de LDAP-client weer en de datum en tijd waarop elke overeenkomende query is verzonden. |
Tijdrangschikkingen zoeken | Geeft het aantal LDAP-query's weer dat is opgetreden in kwartielen op basis van tijd. Tragere query's zijn slecht. Snellere query's zijn goed als ze niet te vaak worden uitgegeven. Microsoft Exchange wil dat LDAP-query's die worden uitgegeven door Exchange-servers worden omgezet in 50 milliseconden of minder. De eerste kwartielgroep richt zich dus op die tijd 'bucket'. |
Lege draai | Dit is een lege draaitabel die u indien nodig kunt wijzigen om de specifieke gegevens voor uw scenario weer te geven. |
Scenario-analyse
Als LDAP-query's traag zijn of als het CPU-gebruik hoog is op domeincontrollers, kan dit worden veroorzaakt door overmatig uitgegeven query's, inefficiënte query's, een combinatie van deze query's, Asynchrone threadwachtrij (ATQ) pooluitputting of veel wijzigingsmeldingen.
Als clients dure, inefficiënte of veel LDAP-query's uitvoeren, gebruikt u Event1644Reader.ps1 om gegevens op de domeincontrollers te verzamelen om de IP-adressen van de clients te identificeren. Wijs dergelijke query's vervolgens toe aan de proces-id, de procesnaam of de aanroepende toepassing op de clientcomputers.
De volgende tabel bevat de mogelijke optimalisaties voor dit probleem.
Optimalisatie/beperking | Synopsis |
---|---|
Stop de overmatige werkbelasting. | Als veel of LDAP-query's ertoe leiden dat de service wordt gestopt, richt u zich op de belangrijkste aanroepende clients en werkt u aan het identificeren en elimineren van de bron van de overmatige workload. Mogelijke opties voor het identificeren van toepassingen zijn het gebruik van PROCMON, ETL/ETW-tracering en foutopsporingsanalyse om de toepassing te identificeren die LDAP-query's op de client genereert. Een andere strategie is het gebruik van een verdeel-bij-twee-benadering van topping-services of het verwijderen van toepassingen die LDAP-query's genereren. De uitgegeven query's kunnen de aanroepende toepassing of het aanroepende proces impliceren. |
Installeer een bijgewerkte LDAP-queryoptimalisatie. | Windows Server 2012 R2 bevat een bijgewerkte LDAP-queryoptimalisatie die de prestaties voor de meeste query's verbetert. Subsets van De Windows Server 2012 R2 worden backported naar Windows Server 2008 R2 en Windows Server 2012 in hotfix 2862304. |
Zorg ervoor dat clients query's verzenden naar site-optimale domeincontrollers. | Het verzenden van LDAP-query's via het WAN zorgt voor netwerklatentie bij de levering van de LDAP-query aan de domeincontroller en het antwoord op de client. Zorg ervoor dat Active Directory-sites en subnetdefinities bestaan voor client- en servercomputers in Active Directory. Zorg ervoor dat toepassingen geen in code vastgelegde verwijzingen hebben naar externe site-domeincontrollers of naar beschrijfbare domeincontrollers die alleen kunnen worden gelezen als er site-optimale domeincontrollers bestaan. |
Neem contact op met softwareontwikkelaars om de frequentie te verminderen waarmee query's worden uitgegeven. Dit omvat het gebruik van caching. | Zelfs efficiënt uitgegeven query's kunnen een domeincontroller van de juiste grootte en geconfigureerde verslaan als query's te vaak worden uitgegeven. Toepassingen moeten mogelijk hun queryvolume of cachequeryresultaten beperken om de netwerk-, LDAP- en CPU-belasting te verminderen. |
Optimaliseer de LDAP-query om sneller uit te voeren. | De querysyntaxis moet mogelijk worden geherstructureerd om sneller uit te voeren. Het verplaatsen van query-elementen naar links of rechts binnen het filter kan de prestaties verbeteren. Het toevoegen van een dubbele not kan de queryprestaties verbeteren. Overweeg het aantal objecten dat wordt bezocht te verminderen door query's lager in de structuur te starten. Verminder het aantal kenmerken dat wordt geretourneerd door query's. |
Voeg indien nodig indexen toe aan Active Directory-kenmerken. | Het toevoegen van indexen kan de queryprestaties verbeteren. Dit heeft als neveneffect dat de database groter wordt en kan de Active Directory-replicatie tijdelijk vertragen tijdens het bouwen van de index. |
Bepaal of er een codefout bestaat in het queryoptimalisatieprogramma en andere onderdelen. | Defecten in het LDAP-queryoptimalisatieprogramma en andere onderdelen kunnen de doorvoer verminderen. |
Bekend probleem
De waarden in het Excel-werkblad worden niet correct weergegeven of weergegeven op computers die niet-Engelse talen gebruiken.
Dit gebeurt bijvoorbeeld op een computer wanneer de Get-Culture Windows PowerShell-cmdlet de landinstelling als volgt aangeeft:
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)
In deze situatie worden getallen in het Excel-werkblad weergegeven zoals in de volgende schermopname:
U kunt dit probleem oplossen door het decimaalteken te wijzigen in een punt (.) in het item Regio-instellingen in het Configuratiescherm.
Zie de volgende blog voor meer informatie over LDAP-query's: Dure, inefficiënte en langlopende LDAP-query's vinden in Active Directory