Usar Event1644Reader.ps1 para analizar el rendimiento de las consultas LDAP en Windows Server
En este artículo se describe un script que ayuda a analizar el identificador de evento de Active Directory 1644 en Windows Server. Revise los pasos para usar el script y, a continuación, analice los problemas.
Número de KB original: 3060643
Acerca del script Event1644Reader.ps1
El identificador de evento de Active Directory 1644 se registra en el registro de eventos del servicio de directorio. Este evento identifica búsquedas costosas, ineficaces o lentas del Protocolo ligero de acceso a directorios (LDAP) que los controladores de dominio de Active Directory sirven. El identificador de evento general 1644 de NTDS se puede filtrar para registrar búsquedas LDAP en el registro de eventos de Servicios de directorio en función del número de objetos de la base de datos de Active Directory que se visitaron, el número de objetos que se devolvieron o el tiempo de ejecución de la búsqueda LDAP en el controlador de dominio. Para obtener más información sobre el identificador de evento 1644, consulte Revisión 2800945 agrega datos de rendimiento al registro de eventos de Active Directory.
Event1644Reader.ps1 es un script de Windows PowerShell que extrae datos de 1644 eventos hospedados en los registros de eventos del servicio de directorio guardados. A continuación, importa esos datos en una serie de tablas dinámicas en una hoja de cálculo de Microsoft Excel para ayudar a los administradores a obtener información sobre las cargas de trabajo LDAP que están siendo administradas por los controladores de dominio y los clientes que generan esas consultas.
Obtención del script
Puede obtener el script de la entrada Core Infrastructure and Security Blog How to find expensive, ineficaz and long running LDAP queries in Active Directory (Cómo encontrar consultas LDAP costosas, ineficazs y de larga duración en Active Directory).
Nota:
El script se adjunta en la entrada de blog con el nombre de archivo Event1644Reader.zip
Declinación de responsabilidades del Centro de scripts
Los scripts de ejemplo no se admiten en ningún servicio o programa de soporte técnico estándar de Microsoft. Los scripts de ejemplo se proporcionan AS IS sin garantía de ningún tipo. Microsoft renuncia aún más a todas las garantías implícitas, incluidas, sin limitación, ninguna garantía implícita de comerciabilidad o de idoneidad para un propósito determinado. Todo el riesgo derivado del uso o el rendimiento de los scripts y la documentación de ejemplo permanecen con usted. En ningún caso, Microsoft, sus autores o cualquier otra persona implicada en la creación, producción o entrega de los scripts será responsable de cualquier daño (incluidos, sin limitación, daños por pérdida de beneficios empresariales, interrupción empresarial, pérdida de información comercial u otra pérdida pecuniaria) derivado del uso o incapacidad de usar los scripts o documentación de ejemplo, incluso si Microsoft se ha informado de la posibilidad de tales daños.
Compatibilidad con pares en línea
Para obtener soporte técnico en línea del mismo nivel, únase al foro oficial de chicos scripting! Para proporcionar comentarios o notificar errores en scripts de ejemplo, inicie una nueva discusión en la pestaña Discusiones de este script.
Uso del script
Para analizar mejor las consultas LDAP que se capturan en el identificador de evento 1644, siga estos pasos:
Asegúrese de que los controladores de dominio que está solucionando la solución de problemas capturan metadatos de eventos mejorados ** 1644.
Nota:
Windows Server 2012 R2 agregó un registro mejorado de eventos 1644 mediante la grabación de la duración de las consultas LDAP y otros metadatos. El registro de eventos 1644 mejorado se devolvió a Windows Server 2012, Windows Server 2008 R2 y Windows Server 2008 mediante la revisión 2800945.
Establezca el valor de la siguiente entrada del Registro de ingeniería de campo en 5:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Diagnostics\Field Engineering
Nota:
Establecer el nivel de detalle del registro de ingeniería de campo en 5 hará que otros eventos se registren en el registro de eventos del servicio de directorio. Restablezca la ingeniería de campos a su valor predeterminado de 0 cuando no recopile activamente 1644 eventos. (Esta acción no requiere un reinicio).
Si existen las siguientes entradas del Registro, cambie los valores al umbral deseado en milisegundos. Si no existe una entrada del Registro determinada, cree una nueva entrada con ese nombre y, a continuación, establezca su valor en el umbral deseado en milisegundos.
Ruta de acceso del Registro Tipo de datos Valor predeterminado HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters\Search Time Threshold (msecs) DWORD 30,000 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters\Caro Umbral de resultados de búsqueda DWORD 10,000 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters\Ineficaz Search Results Threshold DWORD 1,000 Nota:
- Cuando se habilita el nivel de registro ingeniería de campo y no se usa la entrada del Registro umbral de tiempo de búsqueda (msecs) o se establece en 0, el valor predeterminado del umbral de tiempo es de 30 000 milisegundos. (Esta acción no requiere un reinicio).
- Una estrategia sería establecer el valor del Registro para la configuración del Registro de resultados de búsqueda ineficaz y el umbral de resultados de búsqueda costosos y, a continuación, centrarse en los eventos identificados por la suspensión del tiempo de búsqueda (msecs). Comience con un valor mayor como 100 milisegundos y, a continuación, reduzca incrementalmente el valor a medida que optimice las consultas que se producen en su entorno.
- Event1644Reader.ps1 puede analizar eventos de varios controladores de dominio. Configure la ingeniería de campo, el tiempo de búsqueda, la configuración costosa e ineficaz de la clave del Registro en todos los controladores de dominio en los que desea revisar las búsquedas LDAP.
Descargue el archivo Event1644Reader.ps1 de You can obtain the script from the Core Infrastructure and Security Blog post How to find expensive, ineficaz and long running LDAP queries in Active Directory to the computer that will analyze saved saved Active Directory Service EVTX files that contain 1644 events.
Este equipo debe tener instalado Microsoft Excel 2010 o una versión posterior y debe tener suficiente espacio en disco para hospedar los registros de eventos del servicio de directorio que analizará el script.
Copie los registros de eventos del servicio de directorio guardados que contienen 1644 eventos de los controladores de dominio donde ha habilitado el registro de eventos 1644 en el equipo de análisis 1644.
En el Explorador de Windows, haga clic con el botón derecho en el archivo Event1644Reader.ps1 y seleccione Ejecutar con PowerShell.
A continuación se muestra la captura de pantalla de este paso:
Presione Y para omitir la directiva de ejecución de PowerShell según sea necesario.
Especifique la ruta de acceso de los archivos EVTX que se van a analizar.
Cuando vea el símbolo del sistema como la captura de pantalla siguiente, realice las siguientes acciones:
- Presione Entrar para analizar todos los archivos EVTX que se encuentran en el mismo directorio que el archivo Enent1644Reader.ps1.
- Escriba la
drive:\path
ruta de acceso que contiene los archivos EVTX que se van a analizar.
Nota:
Event1644Reader.ps1 analiza 1644 eventos en todos los registros de eventos del servicio de directorio de nivel superior que se encuentran en la ruta de acceso de destino cada vez que se ejecuta el script.
Abra la hoja de cálculo para revisar los datos y recorrer la serie de pestañas y, a continuación, guarde la hoja de cálculo de Excel según sea necesario. Para obtener más información sobre las pestañas de la hoja de cálculo, vea la sección Tutorial de la hoja de cálculo de Excel creada por 1644Reder.ps1 .
Nota:
*.csv archivos creados por la herramienta no se quitan automáticamente. Considere la posibilidad de purgar archivos *.csv una vez completada la investigación.
Más información
Tutorial de la hoja de cálculo de Excel creada por Event1644Reader.ps1
Event1644Reader.ps1 extrae metadatos de 1644 eventos en los registros de eventos guardados del Servicio de directorio e importa esos datos en una serie de hojas de cálculo con pestañas en una hoja de cálculo de Microsoft Excel.
En la tabla siguiente se resumen los datos contenidos en cada pestaña:
Pestaña | Description |
---|---|
RawData | Cada campo de datos capturado por el identificador de evento 1644 se importa en columnas discretas. El filtrado de datos está habilitado automáticamente para que pueda ordenar o filtrar en cualquier encabezado de columna. Si 1644 registros de eventos de varios controladores de dominio residen en el mismo directorio que el script de PowerShell o el directorio especificado por el administrador, use filtros para ver las consultas LDAP destinadas a controladores de dominio específicos. |
Top_StartingNode | Proporciona una lista ordenada de las particiones de directorio destinadas a consultas LDAP en un ejemplo determinado. Si la mayoría de las consultas se producen en una sola partición (esquema, configuración o dominio), considere la posibilidad de agregar esa partición como filtro en las tablas dinámicas restantes. Detalles detallados expone los filtros principales (como la consulta LDAP), las direcciones IP de cliente que emitieron esas consultas y las marcas de fecha y hora para esas consultas. |
Top_Callers | Enumera las direcciones IP de cliente que emitieron consultas LDAP en orden descendente de recuento de búsqueda con porcentaje de total general. El porcentaje de total de ejecución le ayuda a identificar a los principales autores de llamadas. (Es decir, los 10 o 20 autores de llamadas principales pueden generar el 80 % del volumen de consultas, suponiendo que demasiadas llamadas son el problema). Detalles detallados expone filtros y pasos de fecha y hora que cada consulta LDAP emitida por el cliente en un ejemplo determinado. |
Top_Filters | Enumera las consultas LDAP emitidas con más frecuencia en orden descendente de volumen. Esto incluye el tiempo medio de búsqueda. Detalles detallados expone la dirección IP del cliente LDAP y la fecha y hora en que se envió cada consulta. |
TotalSearchTime by Callers | Enumera las direcciones IP de cliente en orden descendente del tiempo total de búsqueda en todas las consultas LDAP del ejemplo. Detalles detallados identifica las consultas LDAP y la fecha y hora en que se emitió cada consulta. |
TotalSearchTime by Filters | Enumera las consultas LDAP en orden descendente del tiempo total de búsqueda. Detalles detallados expone la dirección IP del cliente LDAP y la fecha y hora en que se envió cada consulta coincidente. |
Clasificación de tiempo de búsqueda | Muestra el número de consultas LDAP que se produjeron en cuartiles basados en el tiempo. Las consultas más lentas son incorrectas. Las consultas más rápidas son buenas si no se emiten con demasiada frecuencia. Microsoft Exchange quiere que las consultas LDAP emitidas por los servidores de Exchange se resuelvan en 50 milisegundos o menos. Por lo tanto, el primer grupo cuartil se centra en esa hora "cubo". |
Pivot en blanco | Se trata de una tabla dinámica en blanco que puede cambiar según sea necesario para mostrar los datos específicos para su escenario. |
Análisis de escenarios
Si las consultas LDAP son lentas o si el uso de CPU es elevado en los controladores de dominio, esto puede deberse a consultas emitidas excesivamente, consultas ineficaces, algunas combinaciones de estas consultas, agotamiento de grupos de cola de subprocesos asincrónicas (ATQ) o muchas notificaciones de cambio.
Si los clientes emiten consultas LDAP costosas, ineficaces o muchas, use Event1644Reader.ps1 para recopilar datos en los controladores de dominio para identificar las direcciones IP de los clientes. A continuación, asigne estas consultas al identificador de proceso, el nombre del proceso o la aplicación que realiza la llamada en los equipos cliente.
En la tabla siguiente se enumeran las posibles optimizaciones para este problema.
Optimización y mitigación | Sinopsis |
---|---|
Detenga la carga de trabajo excesiva. | Si muchas consultas LDAP provocan que el servicio se detenga, céntrese en los principales clientes que llaman y trabaje para identificar y eliminar el origen de la carga de trabajo excesiva. Entre las posibles opciones para identificar las aplicaciones se incluyen el uso de PROCMON, el seguimiento ETL/ETW y el análisis de depuración para identificar la aplicación que genera consultas LDAP en el cliente. Otra estrategia consiste en usar un enfoque de división por dos para detener servicios o quitar aplicaciones que generan consultas LDAP. Las consultas emitidas pueden implicar la aplicación o el proceso que realiza la llamada. |
Instale un optimizador de consultas LDAP actualizado. | Windows Server 2012 R2 contiene un optimizador de consultas LDAP actualizado que mejora el rendimiento de la mayoría de las consultas. Los subconjuntos de Windows Server 2012 R2 se devuelven a Windows Server 2008 R2 y Windows Server 2012 en 2862304 de revisión. |
Asegúrese de que los clientes envían consultas a controladores de dominio óptimos para el sitio. | El envío de consultas LDAP a través de la WAN introduce la latencia de red en la entrega de la consulta LDAP al controlador de dominio y su respuesta al cliente. Asegúrese de que existen sitios y definiciones de subred de Active Directory para equipos cliente y servidor en Active Directory. Asegúrese de que las aplicaciones no tienen referencias codificadas de forma rígida a controladores de dominio de sitio remoto o a controladores de dominio grabables de lectura solo cuando existen controladores de dominio óptimos para el sitio. |
Trabaje con desarrolladores de software para reducir la frecuencia con la que se emiten las consultas. Esto incluye el uso del almacenamiento en caché. | Incluso las consultas emitidas de forma eficaz pueden reducir un controlador de dominio configurado y de tamaño adecuado si las consultas se emiten con demasiada frecuencia. Es posible que las aplicaciones tengan que limitar el volumen de consulta o almacenar en caché los resultados de las consultas para reducir la carga de red, LDAP y CPU. |
Optimice la consulta LDAP para que se ejecute más rápidamente. | Es posible que la sintaxis de consulta tenga que reestructurarse para ejecutarse más rápidamente. Mover elementos de consulta a la izquierda o derecha dentro del filtro puede mejorar el rendimiento. Agregar un doble "no" puede mejorar el rendimiento de las consultas. Considere la posibilidad de reducir el número de objetos que se visitan iniciando consultas más bajas en el árbol. Reduzca el número de atributos que devuelven las consultas. |
Agregue índices a atributos de Active Directory según sea necesario. | Agregar índices puede mejorar el rendimiento de las consultas. Esto tiene el efecto secundario de aumentar el tamaño de la base de datos y puede retrasar temporalmente la replicación de Active Directory durante la compilación del índice. |
Determine si existe un defecto de código en el optimizador de consultas y en otros componentes. | Los defectos en el optimizador de consultas LDAP y otros componentes pueden reducir el rendimiento. |
Problema conocido
Los valores de la hoja de cálculo de Excel no se muestran ni se representan adecuadamente en equipos que usan idiomas que no son inglés.
Por ejemplo, esto ocurre en un equipo cuando el cmdlet Get-Culture de Windows PowerShell indica la configuración regional de la siguiente manera:
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)
En esta situación, los números de la hoja de cálculo de Excel se representan como en la captura de pantalla siguiente:
Para resolver este problema, cambie el símbolo Decimal a un punto (.) en el elemento Configuración de región de Panel de control.
Para obtener más información sobre las consultas LDAP, consulte el blog siguiente: Cómo encontrar consultas LDAP costosas, ineficaces y de larga duración en Active Directory