AD DS 效能微調中的 LDAP 考量
重要
以下摘要說明適用於 Active Directory 工作負載之伺服器硬體最佳化的主要建議與考量,Active Directory Domain Services 的容量規劃一文中進一步說明這些資訊。 強烈建議讀者檢閱 Active Directory Domain Services 的容量規劃,以深入了解這些建議的技術和含義。
驗證 LDAP 查詢
驗證 LDAP 查詢是否符合建立有效查詢的建議。
MSDN 上提供有關如何正確撰寫、建構及分析查詢以供 Active Directory 使用的大量文件。 如需詳細資訊,請參閱建立更有效率的 Microsoft Active Directory 啟用應用程式。
最佳化 LDAP 頁面大小
傳回包含多個物件的結果以回應用戶端要求時,網域控制站必須暫時將結果集儲存至記憶體。 增加頁面大小會導致記憶體使用量增加,而且可能會在快取中留存非必要項目。 在此情況下,預設設定是最佳選項。 在以下幾種狀況,會建議您增加頁面大小設定。 除非特別指出預設值不適合,否則建議您使用預設值。
如果查詢結果有許多筆,系統可能會對同時執行的類似查詢有所限制。 發生這種情況是因為 LDAP 伺服器可能會耗盡稱為 Cookie 集區的全域記憶體區域。 如同如何處理 LDAP 伺服器 Cookie 中的說明,您可能需要增加集區的大小。
若要微調這些設定,請參閱 Windows Server 2008 和更新版本的網域控制站只會在 LDAP 回應中傳回 5000 個值。
判斷是否要新增索引
若要在篩選器中搜尋具有屬性名稱的物件,編製屬性索引很有幫助。 編製索引可減少評估篩選條件時必須瀏覽的物件數目。 但這會降低寫入作業的效能,因為您必須先更新索引,才能修改或新增對應的屬性。 此舉也會增加目錄資料庫的大小,而其優點往往遠超過儲存體所需成本。 記錄可用來尋找成本昂貴且效率不佳的查詢。 找到後,請考慮為對應查詢所使用的某些屬性編製索引,以便改善搜尋效能。 如需 Active Directory 搜尋運作方式的詳細資訊,請參閱 Active Directory 搜尋的運作方式。
受益於新增索引的狀況
要求資料的用戶端負載會大量產生 CPU 使用量,且無法變更或最佳化用戶端查詢行為。
由於屬性未編製索引,用戶端負載會在伺服器產生大量的磁碟 I/O,而且無法變更或最佳化用戶端查詢行為。
由於缺少涵蓋的索引,查詢需要很長的時間,而且無法在用戶端可接受的時間範圍內完成。
若持續長時間進行大量查詢,會導致消耗 ATQ LDAP 執行緒並將其耗盡。 請監視下列效能計數器:
NTDS\要求延遲:取決於處理要求所花費的時間。 Active Directory 會在 120 秒 (預設值) 之後退出要求,但大多數要求的執行速度應該要快得多,而且長時間執行的查詢應該會隱藏在總數中。 請留意此基準的變化,而不是絕對閾值。
注意
這裡的較高值也可能表明其他網域的「Proxy 處理」要求和 CRL 檢查出現延遲。
NTDS\預估的佇列延遲:理想情況下,此值應該接近 0 以達到最佳效能,因為這表示要求不會花時間等待服務。
您可以使用下列一或多個方法來偵測這些狀況:
效能監視器中的 Active Directory 診斷資料收集器集合工具 (SPA 的後代:Win2008 及更新版本的 AD 資料收集器集合工具)
透過 "(objectClass=*)" (使用上階索引) 以外的任何篩選條件進行搜尋。
其他索引考量
請確定在選擇完成微調查詢之後,建立索引是解決問題的絕佳方案。 請務必精準調整硬體大小。 請僅在為屬性編製索引是合適修正方法的情況下新增索引,而非試圖掩蓋硬體問題時才這麼做。
索引會增加資料庫的大小,增加量至少是編製索引屬性的總大小。 因此,藉由取得屬性資料的平均大小,再乘以將填入該屬性的物件數目,即可評估資料庫增長的預估值。 一般而言,資料庫大小約莫會增加 1%。 如需詳細資訊,請參閱資料存放區的運作方式。
如果搜尋行為主要是在組織單位層級完成,建議為容器化搜尋編製索引。
元組索引比一般索引大,但大小更難以估計。 使用一般索引的大小預估值作為增長下限,最大值為 20%。 如需詳細資訊,請參閱資料存放區的運作方式。
如果搜尋行為主要是在組織單位層級完成,建議為容器化搜尋編製索引。
需要元組索引才能支援中間搜尋字串和最終搜尋字串。 初始搜尋字串則不需要元組索引。
初始搜尋字串:(samAccountName=MYPC*)
中間搜尋字串:(samAccountName=*MYPC*)
最終搜尋字串:(samAccountName=*MYPC$)
建立索引會在索引組建期間產生磁碟 I/O。 此作業是在優先順序較低的背景執行緒上完成,傳入要求的優先程度會高於索引組建。 如果已正確設定環境的容量規劃,這應該會清楚易懂。 不過,大量寫入案例或網域控制站儲存體負載未知的環境可能會降低用戶端體驗,應該在停機期間完成。
由於建置索引是在本機上執行,因此對複寫流量的影響很小。
如需詳細資訊,請參閱下列各項: