共用方式為


Active Directory 網域服務 最大限制和延展性

本文說明 Active Directory 環境特定層面可能會影響延展性的最大限制。 建議您在規劃 Active Directory 部署時記住這些限制。

對象數目上限

Active Directory 樹系中的每個域控制器在其存留期內可以建立近 21.5 億個物件。

每個 Active Directory 域控制器都有個別域控制器特有的唯一標識碼。 這些標識碼稱為辨別名稱標籤 (DNT),是其他域控制器不會復寫或其他可見的唯一值。 DNT 的值範圍是從 0 到 2,147,483,393 (231 減 255)。 當您刪除物件時,您之後不會建立任何新物件使用相同的 DNT。 因此,域控制器僅限於在20億個物件下建立,這也包含域控制器所復寫的物件。 此限制適用於域控制器上裝載之所有分割區的所有物件匯總,包括網域網路計算機 (NC)、組態、架構,以及任何應用程式目錄分割區。

有一些可能的方法可以解決域控制器存留期建立限制。 例如,您可以藉由永久刪除物件,從網域中移除物件。 您也可以安裝新的域控制器,從潛在的域控制器複寫其餘物件。 不過,您必須確定新的域控制器會透過複寫接收物件,而且您不會使用 [從媒體安裝] 選項來升級它。 使用 IFM 安裝的域控制器會繼承 IFM 備份所依據之域控制器的 DNT 值。

當您達到資料庫的 DNT 限制時,您會看到下列錯誤訊息:

Error: Add: Operations Error. <1> Server error: 000020EF: SvcErr: DSID-0208044C, problem 5012 (DIR_ERROR), data -1076.

您可以執行下列命令來檢查 大約HighestInternalObjectID 屬性,以查看域控制器目前使用的最高 DNT:

$ossupported = $false
 
# max possible DNTs
$maxdnts = [System.Math]::Pow(2, 31) - 255
 
# connect rootDSE
$root = [ADSI]"LDAP://rootDSE"
 
# get operational attribute dsaVersionString
$root.RefreshCache("dsaVersionString")
 
# get version string usable in System.Version
$osverstring = $root.dsaVersionString[0].Substring(0, $root.dsaVersionString[0].IndexOf(" "))
 
try
{
    $osver = New-Object System.Version $osverstring
 
    # we need at least W2K12 DC to see the approximateHighestInternalObjectID exposed
    if ($osver.Major -gt 6)
    { $ossupported = $true }
 
    elseif ($osver.Major -eq 6)
    { $ossupported = ($osver.Minor -ge 2) }
}
 
catch
{ Write-Host "ERROR: Could not evaluate DC OsVer!"  }
 
if ($ossupported)
{
    # get operational attribute approximateHighestInternalObjectID
    $root.RefreshCache("approximateHighestInternalObjectID")
 
    Write-Host "Approx highest committed DNT: $($root.approximateHighestInternalObjectID[0])"
 
    Write-Host "DNTs left for new assignments: $($maxdnts - $root.approximateHighestInternalObjectID[0]) from $maxdnts"
}
 
else
{ Write-Host "approximateHighestInternalObjectID not exposed (DC OsVer: $osverstring)" }

安全性標識碼數目上限

您可以在域控制器存留期內建立的安全性標識碼數目上限為 2,147,483,647 個相對標識碼(RID)。 如需發行和監視 RID 的詳細資訊,請參閱 管理 RID 發行

此限制是因為全域相對標識碼 (RID) 集區的大小,使得每個 SID 都指派給網域中唯一的使用者、群組和電腦帳戶。 即使您刪除其安全性主體,也不會重複使用 RID,因此不論網域中有多少安全性主體,上限一律適用。

注意

根據預設,RID 會以 500 個區塊指派給域控制器,而域控制器會在每個網域中保留 RID 作業主要角色。 如果您降級域控制器,原本配置給域控制器的未使用 RID 不會返回全域 RID 集區,而且無法用於網域。

當可用 RID 數目達到 90% 的可用全域 RID 空間時,Windows Server 會開始準備 RID 發行的人工限制。 當可用的 RID 數目達到該限制的百分比內時,要求 RID 集區的域控制器在其系統事件記錄檔中會收到 Directory-Services-SAM 警告事件 16656。

RID 限制的部分因應措施是建立額外的網域來保存帳戶,然後將帳戶移轉至該新網域。 不過,您必須為新網域建立任何必要的信任關係,才能達到限制。 建立信任關係需要安全性準則,也稱為信任用戶帳戶。

注意

Active Directory 資料庫不會針對容器中的物件數目設定限制,但是當您使用數千個物件時,會設定限制。 Microsoft設定這些限制以提供特定層級的應用程式或服務可用性。 您可以在檢視功能表上重新設定 [篩選選項] 設定,或變更羽量型目錄存取通訊協定 (LDAP) 原則,以調整這些限制。 如需詳細資訊,請參閱 KB 315071

自由裁量和安全性 存取控制 清單中的項目數目上限

這項限制適用於您可以使用 ntSecurityDescriptor 屬性,在 Active Directory 物件的任意存取控制清單 (DACL) 或安全性存取控制清單 (SACL) 中擁有的項目數目。 限制本身是以訪問控制清單 (ACL) 的大小限制為基礎,也就是 64 K。由於訪問控制專案(ACE)的大小可能會因為包含一或多個全域唯一標識碼(GUID)而有所不同,所以實際項目數目上限可以介於 1,100 到 1,820 之間。 如需詳細資訊,請參閱安全性描述元和 存取控制 清單的運作方式。

安全性主體的群組成員資格

使用者、群組和計算機帳戶等安全性主體可以是最多1,015個群組的成員。 這項限制是因為您為每個安全性主體建立的存取令牌具有大小限制,不會受到您巢狀群組的方式影響。 如需詳細資訊,請參閱 KB 328889

如需域控制器如何建立用於授權決策之數據結構的詳細資訊,請參閱下列文章:

FQDN 長度限制

Active Directory 中的完整功能變數名稱 (FQDN) 長度不能超過 64 個字元,包括連字元和句號。 因為儲存在 SYSVOL 共用中的 Win32 應用程式開發介面 (API) 和組策略物件 (GPO) 會將MAX_PATH值定義為 260 個字元,因此存在這項限制。 如需詳細資訊,請參閱 KB 909264

檔名和路徑限制

Active Directory 元件所使用的實體檔案,例如SVOL、資料庫 (NTDS)。DIT 和記錄檔路徑受限於 260 個字元的MAX_PATH長度,如 Win32 API 所定義。 在決定在 Active Directory 安裝期間放置 SYSVOL 和資料庫檔案的位置時,請避免巢狀資料夾結構,讓 Active Directory 中任何實體檔案的完整檔案路徑超過 260 個字元。

其他名稱長度限制

下列名稱長度限制,如 KB 909264中所述,也適用於 Active Directory 中的資源和檔名:

  • NetBIOS 計算機和功能變數名稱長度只能是 15 個字元。

  • 功能變數名稱系統 (DNS) 主機名長度只能是 24 個字元。

  • OU 名稱長度只能有 64 個字元。

架構的名稱長度限制

架構會對 Active Directory 物件的屬性名稱施加下列預設限制:

  • 顯示名稱長度只能有 256 個字元,如 Display-Name 屬性中所述

  • 通用名稱長度只能有64個字元,如 Common-Name 屬性中所述

  • SAM-Account-Name 屬性在架構中只能有 256 個字元。 不過,基於回溯相容性的原因,使用者的 Active Directory 限制為 20 個字元。 如需詳細資訊,請參閱 SAM-Account-Name 屬性

LDAP 簡單系結作業的名稱長度限制

在系結至目錄期間,簡單的LDAP系結作業會將用戶的辨別名稱 (DN) 限制為255個字元。 如果您嘗試使用超過 255 個字元的簡單 LDAP 系結,可能會遇到下列驗證錯誤:

Error <49>: ldap_simple_bind_s() failed: Invalid Credentials
Server error: 80090308: LdapErr: DSID-0C0903AA, comment: AcceptSecurityContext error, data 57, v1771
Error 0x80090308 The token supplied to the function is invalid

您可以藉由確保嘗試系結至目錄的應用程式、腳本和公用程式使用安全 LDAP 系結,來避免此問題。 您也可以嘗試減少 OU 結構的深度或 OU 名稱的長度。 例如,下列辨別名稱為 261 個字元:

CN=BobKelly,OU=CorporateVicePresidents,OU=CorporateOfficers,OU=ViewOfPugetSoundOffices,OU=TopFloor,OU=Building1557,OU=CorporateCampus,OU=Redmond,OU=Washington,OU=NorthWestern,OU=UnitedStatesOfAmerica,OU=NorthAmerica,DC=BusinessGroup,DC=humongousinsurance,DC=com

如果您將名為 CorporateVicePresidents 的 OU 縮短為 CVP,則使用者帳戶的 BobKelly 辨別名稱現在只有 242 個字元,因此在限制內。

套用 GPO 的數目上限

Active Directory 會將您可以套用至使用者或計算機帳戶的 GPO 數目限制為 999。 此限制並不表示系統上的原則設定總數限制為999。 相反地,單一使用者或計算機無法處理超過999個 GPO。 這項限制是為了避免同時處理太多 GPO 所造成的效能問題。

信任限制

信任限制適用於信任網域物件數目(TDO)、信任路徑長度,以及用戶端探索可用信任的能力。 Active Directory 的信任限制包括下列限制:

  • Kerberos 用戶端最多可以周遊 10 個信任連結,以在另一個網域中尋找要求的資源。 如果網域之間的信任路徑超過此限制,嘗試存取網域就會失敗。

  • 當客戶端搜尋信任路徑時,搜尋僅限於直接使用樹系內可轉移的網域和信任所建立的信任。

  • 先前的測試顯示,如果組織中的 Active Directory 實作包含超過 2,400 個 TDO,則完成 TDO 相關作業的時間增加,例如跨網域驗證,效能會明顯惡化。

如需信任限制的詳細資訊,請參閱 信任的實際限制。

每個LDAP交易的帳戶數目上限

當您撰寫執行LDAP交易的腳本或設計應用程式時,建議您在每個LDAP交易中執行不超過5,000個作業。 LDAP 交易是一組目錄作業,會被視為一個單位,例如新增、刪除和修改。 如果您在一個LDAP交易中執行超過5,000個作業,就有可能進入資源限制和作業逾時。如果您遇到這個問題,交易中的所有作業都會回復,導致您在交易期間所做的任何變更遺失。 若要深入瞭解認可變更的LDAP數據結構,請參閱 LDAPModA結構

針對 Windows 2000 Active Directory 環境,群組中建議的成員數目上限為 5,000。 這項建議是以單一資料庫交易中可認可的並行不可部分完成變更數目為基礎。

從 Windows Server 2003 開始,將離散變更複寫至連結多重值屬性的能力引進為稱為「連結值複寫」(LVR)的技術。 若要啟用 LVR,您必須將樹系功能等級提高到至少 Windows Server 2003 過渡期。 增加樹系功能等級會變更群組成員資格(和其他連結的多值屬性)儲存在資料庫中,並在域控制器之間復寫的方式。 這可讓群組成員資格數目超過 Windows 2000 或 Windows Server 2003 在 Windows 2000 樹系功能層級上先前的建議限制 5,000。

到目前為止,在此區域中的測試尚未顯示群組中成員數目或任何其他連結多重值屬性的任何新建議限制。 據報導,生產環境已超過 400 萬個成員,Microsoft延展性測試達到 5 億個成員。

重要

將樹系功能等級提高到 Windows Server 2003 過渡期或更新版本並不會修改現有群組成員儲存或復寫的方式。 若要這樣做,您必須移除在樹系功能等級增加至 Windows Server 2003 之前新增至群組的成員,然後將成員再次新增回適當的群組。 您新增或移除樹系功能等級之後的任何群組成員都會啟用 LVR,即使群組包含未啟用 LVR 的其他成員也一樣。 如需連結屬性的詳細資訊,請參閱 連結屬性。 如需復寫程式的詳細資訊,請參閱 Active Directory 複寫模型的運作方式。

下表列出每個網域運作層級的建議網域數目上限。

網域功能層級 建議的最大網域數目
Windows 2000 伺服器 800
Windows Server 2003 1,200
Windows Server 2025 3,000

Windows Server 2003 的 1,200 限制是 Windows Server 2003 中多重值、非鏈接屬性的限制。 如需詳細資訊,請參閱數據存放區的運作方式(/舊版/windows/it-pro/windows-server-2003/cc772829(v=ws.10)中的。

我們建議您將每個網域使用的域控制器數目限制為1,200。 此限制可確保發生災害時,您可以可靠地復原 SYSVOL。

如果您預期網路中有 1,200 個以上的域控制器,且這些域控制器裝載 Active Directory 整合域名系統 (DNS) 區域,建議您檢閱 KB 267855 以進行規劃。

Kerberos 票證的建議大小上限為 48,000 個字節。 您可以在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Lsa\Kerberos\Parameters 登錄或透過組策略設定 MaxTokenSize REG_DWORD 值,或透過組策略來設定票證大小,如 KB 938118中所述

注意

MaxTokenSize 的最大允許值為 65,535 個字節。 如果您使用 Kerberos 進行 IP 安全性 (IPsec) 金鑰管理,限制為 65,536 個字節。 不過,由於驗證內容令牌的 HTTP base64 編碼,我們建議您不要將 maxTokenSize 登錄項目設定為大於 48,000 個字節的值。 從 Windows Server 2012 開始,MaxTokenSize 登錄項目的預設值為 48,000 個字節。

如需 Kerberos 票證的詳細資訊,請參閱 針對 Kerberos 進行疑難解答的其他資源。

非鏈接屬性值的數目上限

Active Directory 資料庫會將非連結屬性值儲存在必須符合資料庫頁面上的連結目錄中。 由於此大小需求,只攜帶一個屬性之物件的非鏈接屬性上限為 1,200。 在 Windows Server 2025 樹系中,您可以將限制增加到 3,000。

在真實世界的部署中,當物件接近非鏈接屬性限制時,就會開始出現錯誤。 這些錯誤類型的狀態代碼是0x00000b,並對應至「伺服器已超過LDAP_ADMIN_LIMIT_EXCEEDED系統管理限制」字串。

如需限制的詳細資訊,請參閱 AD 資料庫詳細數據一文單一 DNS 名稱上的許多 DNS 記錄,以及 Active Directory 複寫錯誤 8304:已超過物件的大小上限。

Active Directory 物件的大小上限

若要變更具有大量數據的屬性,您必須將新的和舊值儲存在資料庫交易中。 儲存值可讓您在交易中間關閉資料庫時回復交易。 交易的大小上限會將屬性值數據的總 Blob 大小限製為 5 MB。

您可以執行的 Active Directory 交易大小上限也會影響在連結值複寫之前可以擁有的群組成員數目限制,以及群組成員資格變更中有多少交易存在。