共用方式為


進行 AD DS 效能微調時的記憶體使用量注意事項

本文介紹本機安全性授權子系統服務 (LSASS,也稱為 Lsass.exe 程序) 的一些基本概念、LSASS 組態的最佳作法,以及預期的記憶體使用量。 本文應作為分析網域控制站 (DC) 中 LSASS 效能和記憶體使用量的指南。 如果您有如何微調和設定伺服器及 DC 以最佳化此引擎的相關疑問,本文所含的資訊可能會很有用。

LSASS 負責管理本機安全性授權 (LSA) 網域驗證和 Active Directory 管理。 LSASS 會同時處理用戶端和伺服器的驗證作業,也會控管 Active Directory 引擎。 LSASS 負責下列元件:

  • 本機安全性授權
  • NetLogon 服務
  • 安全性帳戶管理員 (SAM) 服務
  • LSA 伺服器服務
  • 安全通訊端層 (SSL)
  • Kerberos v5 驗證通訊協定
  • NTLM 驗證通訊協定
  • 載入 LSA 的其他驗證套件

Active Directory 資料庫服務 (NTDSAI.dll) 可以和可延伸儲存引擎 (ESE,ESENT.dll) 搭配運作。

以下是 DC 上 LSASS 記憶體使用量的視覺化圖表:

Diagram of the components that use LSASS memory

LSASS 在 DC 上的記憶體使用量會隨著 Active Directory 使用量而增加。 被查詢的資料會在記憶體中快取。 因此,使用超過 Active Directory 資料庫檔案 (NTDS.dit) 大小的記憶體數量來查看 LSASS 是正常的。

如圖所示,LSASS 記憶體使用量可以分成數個部分,包括 ESE 資料庫緩衝區快取和 ESE 版本存放區等等。 我們在本文的其他區段深入解析這些部分。

ESE 資料庫緩衝區快取

LSASS 內最大的可變記憶體使用量是 ESE 資料庫緩衝區快取。 快取的大小範圍可從小於 1 MB 到整個資料庫大小。 由於較大的快取可提升效能,因此 Active Directory 的資料庫引擎 (ESENT) 會嘗試盡可能保留快取。 雖然快取大小會因電腦中的記憶體壓力而異,但 ESE 資料庫緩衝區快取的大小上限只會受限於電腦上安裝的實體 RAM。 只要沒有其他記憶體壓力,快取就可能增長至 Active Directory NTDS.dit 資料庫檔案的大小。 可快取的資料庫越多,DC 的效能就越好。

注意

由於資料庫快取演算法的運作方式所致,若 64 位元系統上的資料庫大小小於可用 RAM,資料庫快取可能會增長到超過資料庫大小 30 到 40%。

ESE 版本存放區

ESE 版本存放區有可變記憶體使用量 (上圖中的紅色部分)。 記憶體使用量取決於您使用的是 Windows Server 2019 或更早版本的 Windows。

  • 在早於 Windows Server 2019 的 Windows Server 版本中,LSASS 依預設可能會在 64 位元的電腦上將最多約 400 MB 的記憶體 (視 CPU 數目而定) 用於 ESE 版本存放區。 如需版本存放區使用方式的詳細資訊,請參閱 Ryan Ries 所撰寫的 ASKDS 部落格文章:The Version Store Called and They're All Out of Buckets (已呼叫版本存放區,但已全部用盡)。

  • 這個情況在 Windows Server 2019 中有所簡化,在 NTDS 服務首次啟動時,ESE 版本存放區大小現在會按照實體 RAM 的 10% 計算,且最小 400MB,最大 4GB。 如需有關這項運作和版本存放區疑難排解的詳細資訊,請參閱 Ryan Ries 撰寫的另一篇精彩部落格文章:Deep Dive: Active Directory ESE Version Store Changes in Server 2019 (深入探討:Server 2019 中的 Active Directory ESE 版本存放區變更)。

其他的記憶體使用情況

最後還有程式碼、堆疊、堆積和各種固定大小的資料結構 (例如架構快取)。 LSASS 使用的記憶體數量可能會根據電腦上的負載而有所不同。 隨著執行中的執行緒數目增加,記憶體堆疊的數目也會增加。 平均而言,LSASS 會針對這些固定元件使用 100 MB 到 300 MB 的記憶體。 安裝數量較大的 RAM 時,LSASS 可以使用更多 RAM 和較少的虛擬記憶體。

限制或最小化網域控制站上的程式數目,或視需要新增其他 RAM

為了獲得最佳效能,LSASS 在指定的 DC 上會盡可能採用最多的 RAM。 有其他程序需要 RAM 時,LSASS 會讓出該 RAM。 此概念是將 LSASS 效能最佳化的同時,仍考量電腦上可能執行的其他程序。 要監看的程式清單中包括監視代理程式。 有些客戶對各種伺服器功能具有不同的代理程式,如此可能會耗用大量 RAM 資源。 有些則可能發出許多 WMI 查詢,下文將提供一些詳細資料。

因此,為了提高效能,建議限制或最小化 DC 上的程式數目。 如果沒有記憶體要求,LSASS 會使用此記憶體來快取 Active Directory 資料庫,因此能達最佳效能。

在您注意到 DC 有效能問題時,也請監看具有大量記憶體使用率的程序。 這些程序可能會有需要疑難排解的問題。 它們可能包含 Microsoft 元件。 請確保您持續取得最近的服務更新;Microsoft 將記憶體使用率過高的解決方案列為品質更新的一部分,這也可能有助於改善 DC 效能。

根據使用量設定檔,內建作業系統設施可能會消耗大量 RAM:

  • 檔案伺服器。 DC 也是 SYSVOL 和 Netlogon 共用的檔案伺服器,為群組原則和原則指令碼以及啟動/登入指令檔提供服務。 不過,我們也看到客戶使用 DC 為其他檔案內容提供服務。 SMB 檔案伺服器接著會取用 RAM 來追蹤使用中的用戶端,但最重要的是,檔案內容會讓 OS 檔案快取增長,並與 ESE 資料庫快取競爭 RAM。

  • WMI 查詢。 監視解決方案通常會進行許多 WMI 查詢。 執行個別查詢的成本可能較低。 通常,呼叫量會產生一些額外負荷,尤其是監視解決方案會從 Windows 管理的各種事件記錄檔擷取新事件。

    產生最多磁碟區的事件記錄檔通常是安全性事件記錄檔。 這也是安全性系統管理員想要收集的事件記錄檔,尤其是來自 DC 的事件記錄檔。

    WMI 服務會使用可讓查詢最佳化的動態記憶體配置。 因此,WMI 服務可能會配置大量的記憶體,並再次與 ESE 資料庫快取競爭資源。