共用方式為


使用 Event1644Reader.ps1 分析 Windows Server 中的 LDAP 查詢效能

本文說明可協助分析 Windows Server 中 Active Directory 事件識別碼 1644 的腳本。 檢閱 使用腳本的步驟 ,然後 分析您的問題

原始 KB 編號: 3060643

關於 Event1644Reader.ps1 腳本

Active Directory 事件標識碼 1644 會記錄在目錄服務事件記錄檔中。 此事件會識別由Active Directory域控制器服務的昂貴、效率不佳或緩慢的輕量型目錄存取通訊協定 (LDAP) 搜尋。 NTDS 一般事件標識碼 1644 可以篩選,以根據 Active Directory 資料庫中已瀏覽的物件數目、傳回的物件數目,或域控制器上的 LDAP 搜尋運行時間,在 Directory Services 事件記錄檔中記錄 LDAP 搜尋。 如需事件標識碼 1644 的詳細資訊,請參閱 Hotfix 2800945將效能數據新增至 Active Directory 事件記錄檔

Event1644Reader.ps1 是 Windows PowerShell 腳本,可從儲存的 Directory 服務事件記錄檔中裝載的 1644 個事件擷取數據。 然後,它會將該數據匯入 Microsoft Excel 電子表格中的一系列樞紐數據表,以協助系統管理員深入瞭解域控制器和產生這些查詢的用戶端所服務的 LDAP 工作負載。

如何取得腳本

您可以從核心基礎結構和安全性部落格文章取得腳本 如何在Active Directory 中尋找昂貴、沒有效率且長時間執行的LDAP查詢

注意事項

此腳本會附加在具有檔名的部落格文章 Event1644Reader.zip

腳本中心免責聲明
任何 Microsoft 標準支援計劃或服務都不支援範例腳本。 範例指令碼係依「現狀」提供,不含任何種類的擔保方式。 Microsoft 另外不承擔任何明示或默示的擔保,包括但不限於適售性或適合某特定用途的默示擔保。 使用或操作範例指令碼和文件發生的所有風險,皆屬於您的責任。 Microsoft、其作者以及其他與建置、生產或交付程式碼相關的任何人在任何情況下皆完全不需對任何損失負責任,包括但不限於商業利潤損失、業務中斷、業務資訊損失、或其他錢財損失等因使用或無法使用範例指令碼或文件所發生的損失,即使 Microsoft 曾建議這些損失發生的可能性。

在線對等支援
如需在線對等支援, 請加入官方腳本論壇! 若要在範例腳本中提供意見反應或回報錯誤,請在此腳本的 [ 討論 ] 索引卷標上開始新的討論。

如何使用腳本

若要進一步分析在事件標識碼 1644 中擷取的 LDAP 查詢,請遵循下列步驟:

  1. 請確定您要進行疑難解答的域控制器會擷取增強的 ** 1644 事件元數據。

    注意事項

    Windows Server 2012 R2 藉由記錄 LDAP 查詢和其他元數據的持續時間,新增了增強的 1644 事件記錄。 透過 Hotfix 2800945,增強的 1644 事件記錄已回溯至 Windows Server 2012、Windows Server 2008 R2 和 Windows Server 2008。

  2. 將下列 Field Engineering 登入專案的值設定為 5: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Diagnostics\Field Engineering

    注意事項

    將字段工程記錄詳細資訊設定為 5 會導致其他事件記錄在目錄服務事件記錄檔中。 當您未主動收集 1644 個事件時,請將字段工程重設回其預設值 0。 (此動作不需要 restart.)

  3. 如果下列登錄專案存在,請將值變更為所需的閾值,以毫秒為單位。 如果特定登錄專案不存在,請使用該名稱建立新的項目,然後將其值設定為所需的閾值,以毫秒為單位。

    登錄路徑 資料類型 預設值
    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

    注意事項

    • 啟用現場工程記錄層級,且未使用或設定為 0) 登錄專案的搜尋時間臨界值 (毫秒時,時間閾值的預設值為 30,000 毫秒。 (此動作不需要 restart.)
    • 其中一個策略是設定 [效率不佳的搜尋結果閾值] 和 [昂貴搜尋結果閾值] 登錄設定的登錄值,然後將焦點放在搜尋時間保留 (毫秒) 所識別的事件。 從較大的值開始,例如 100 毫秒,然後在優化環境中發生的查詢時,以累加方式減少值。
    • Event1644Reader.ps1 可以剖析來自多個域控制器的事件。 在您要檢閱 LDAP 搜尋的所有域控制器上,設定欄位工程、搜尋時間、昂貴且效率不佳的登錄機碼設定。
  4. 從 [您可以從核心基礎結構與安全性部落格文章取得腳本] 下載 Event1644Reader.ps1 檔案: 如何在Active Directory 中尋找昂貴、效率不佳且長時間執行的 LDAP 查詢 ,並將其下載到將分析儲存的 Active Directory 服務 EVTX 檔案,其中包含 1644 個事件的計算機。

    此計算機應該已安裝 Microsoft Excel 2010 或更新版本,而且應該有足夠的磁碟空間來裝載腳本將剖析的目錄服務事件記錄檔。

  5. 從您啟用 1644 事件記錄的域控制器,將包含 1644 個事件的已儲存目錄服務事件記錄檔複製到 1644 分析計算機。

  6. 在 Windows 檔案總管中,以滑鼠右鍵按兩下 Event1644Reader.ps1 檔案,然後選取 [ 使用 PowerShell 執行]

    以下是此步驟的螢幕快照:

    以滑鼠右鍵按兩下 Event1644Reader.ps1 檔案,然後選取 [使用 PowerShell 執行]。

  7. 按 Y 視需要略過 PowerShell 執行原則。

  8. 指定要剖析之 EVTX 檔案的路徑。

  9. 當您看到提示為下列螢幕快照時,請採取下列動作:

    執行 Event1644Reader.ps1 檔案的 PowerShell 命令。

    • 按 Enter 鍵來剖析與 Enent1644Reader.ps1 檔案位於相同目錄中的所有 EVTX 檔案。
    • drive:\path輸入包含要剖析之 EVTX 檔案的路徑。

    注意事項

    Event1644Reader.ps1 會在每次腳本執行時,剖析位於目標路徑中的所有上層目錄服務事件記錄檔中的1644個事件。

  10. 開啟工作表以檢閱數據並逐步執行一系列的索引標籤,然後視需要儲存 Excel 電子表格。 如需工作表中索引標籤的詳細資訊,請參閱 1644Reder.ps1建立的 Excel 電子表格逐步解說 一節。

    注意事項

    *.csv 不會自動移除工具所建置的檔案。 調查完成之後,請考慮清除 *.csv 檔案。

其他相關資訊

Event1644Reader.ps1 建立的Excel電子表格逐步解說

Event1644Reader.ps1 會從儲存的 Directory Service 事件記錄檔中的 1644 個事件擷取元數據,並將該數據匯入 Microsoft Excel 電子表格中的一系列索引卷標式工作表。

下表摘要說明每個索引標籤中包含的資料:

索引標籤 描述
RawData 事件標識碼 1644 所擷取的每個數據欄位都會匯入離散數據行。 數據篩選是自動啟用的,因此您可以排序或篩選任何數據行標頭。 如果來自多個域控制器的 1644 事件記錄檔位於與 PowerShell 腳本或系統管理員指定目錄相同的目錄中,請使用篩選條件來檢視以特定域控制器為目標的 LDAP 查詢。
Top_StartingNode 提供指定範例中LDAP查詢的目標目錄分割區排序列表。 如果大部分的查詢都發生在架構、設定或網域) (單一數據分割中,請考慮將該數據分割新增為其餘數據透視表中的篩選條件。 鑽研詳細數據會公開最上層篩選 (,例如LDAP查詢) 、發出這些查詢的用戶端IP,以及這些查詢的日期和時間戳。
Top_Callers 以總計百分比的遞減搜尋計數順序列出發出LDAP查詢的用戶端IP位址。 執行總計的百分比可協助您識別最常呼叫者。 (也就是說,前10或20個呼叫端可能會產生80%的查詢磁碟區,前提是您的問題) 。 鑽研詳細數據會公開每個用戶端在指定範例中發出之LDAP查詢的篩選和日期和時間步驟。
Top_Filters 以遞減磁碟區順序列出最常發行的LDAP查詢。 這包括平均搜尋時間。 鑽研詳細數據會公開LDAP用戶端的IP位址,以及提交每個查詢的日期和時間。
依呼叫端的 TotalSearchTime 以範例中所有LDAP查詢的總搜尋時間遞減順序列出用戶端IP位址。 鑽研詳細數據會識別LDAP查詢,以及發出每個查詢的日期和時間。
依篩選條件的 TotalSearchTime 以搜尋總時間的遞減順序列出LDAP查詢。 鑽研詳細數據會公開LDAP用戶端的IP位址,以及提交每個相符查詢的日期和時間。
搜尋時間排名 顯示以時間為基礎的四分位數中發生的LDAP查詢數目。 較慢的查詢不正確。 如果查詢不是太常發出,則更快速的查詢是不錯的。 Microsoft Exchange 想要以 50 毫秒或更少的毫秒來解析 Exchange 伺服器所發出的 LDAP 查詢。 因此,第一個四分位數群組著重於該時間的「貯體」。
空白樞紐 這是空白的數據透視表,您可以視需要變更以顯示案例的特定數據。

案例分析

如果LDAP查詢速度緩慢,或域控制器上的CPU使用量偏高,這可能是因為過度發出的查詢、效率不佳的查詢、這些查詢的某些組合、異步線程佇列 (ATQ) 集區耗盡,或許多變更通知所造成。

如果客戶端發出昂貴、效率不佳或許多LDAP查詢,請使用 Event1644Reader.ps1 收集域控制器上的數據,以識別用戶端的IP位址。 然後,將這類查詢對應至用戶端電腦上的進程標識碼、進程名稱或呼叫應用程式。

下表列出此問題的可能優化。

優化/風險降低 簡介
停止過多的工作負載。 如果大量或LDAP查詢導致服務停止,請專注於最常呼叫的用戶端,並努力找出並消除過多工作負載的來源。

識別應用程式的可能選項包括使用 PROCMON、ETL/ETW 追蹤和偵錯分析來識別在用戶端上產生 LDAP 查詢的應用程式。 另一個策略是使用配料服務或移除產生LDAP查詢之應用程式的二除方法。 發出的查詢可能會隱含呼叫的應用程式或進程。
安裝更新的LDAP查詢優化器。 Windows Server 2012 R2 包含更新的LDAP查詢優化器,可改善大部分查詢的效能。 Windows Server 2012 R2 的子集會在 Hotfix 2862304中回溯至 Windows Server 2008 R2 和 Windows Server 2012。
請確定用戶端正在將查詢提交至月臺最佳域控制器。 跨WAN 傳送LDAP查詢會造成網路等待時間,將LDAP查詢傳遞至域控制器及其對客戶端的回復。 請確定 Active Directory 中的用戶端和伺服器電腦有 Active Directory 月臺和子網定義。

只有在月臺最佳域控制器存在時,確定應用程式沒有遠端月臺域控制器或可讀取可寫入域控制器的硬式編碼參考。
與軟體開發人員合作,以降低發出查詢的頻率。 這包括使用快取。 即使有效率地發出查詢,如果查詢的發出頻率太高,也可以比對適當大小和已設定的域控制器。
應用程式可能必須節流其查詢磁碟區或快取查詢結果,以減少網路、LDAP 和 CPU 負載。
優化LDAP查詢以更快速地執行。 查詢語法可能必須重新建構,才能更快速地執行。
將查詢元素向左或向右移至篩選器內可以改善效能。
新增雙精度浮點數「not」 可改善查詢效能。
請考慮藉由在樹狀結構下方啟動查詢來減少流覽的物件數目。
減少查詢所傳回的屬性數目。
視需要將索引新增至 Active Directory 屬性。 新增索引可以改善查詢效能。 這有增加資料庫大小的副作用,而且可能會在索引建置期間暫時延遲 Active Directory 複寫。
判斷查詢優化器和其他元件中是否有程式代碼缺失。 LDAP 查詢優化器和其他元件中的缺失可能會降低輸送量。

已知問題

在使用非英文語言的計算機上,Excel 電子表格中的值不會適當地顯示或轉譯。

例如,當 Get-Culture Windows PowerShell Cmdlet 指出區域設定時,計算機上就會發生這種情況,如下所示:

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)

在此情況下,Excel 電子表格中的數位會轉譯為下列螢幕快照:

Excel 電子表格中的數字問題。

若要解決此問題,請在 [控制面板] 的 [區域設定] 專案中,將小數點符號變更為句號 (.) 。

如需LDAP查詢的詳細資訊,請參閱下列部落格: 如何在Active Directory 中尋找昂貴、效率不佳和長時間執行的LDAP查詢