本文介绍 Active Directory 复制失败并出现错误 8446 时出现的问题的症状、原因和解决方法步骤。
注意
家庭用户: 本文仅适用于技术支持代理和 IT 专业人员。 如果你正在寻找解决问题的帮助, 请询问Microsoft社区。
原始 KB 编号: 2693500
现象
本文介绍 Active Directory 复制失败并出现错误 8446 时出现的问题的症状、原因和解决方法步骤:“复制操作未能分配内存。
-
REPADMIN.exe报告复制尝试失败,出现错误 8446 - “复制操作未能分配内存”。
DC=Contoso,DC=com Default-First-Site-Name\DomainController via RPC DC object GUID: <source DCs ntds settings object object guid> Last attempt @ <Date Time> failed, result 8446 (0x20fe): The replication operation failed to allocate memory. 1359 consecutive failure(s). Last success @ <Date & Time>. CN=Configuration,DC=Contoso,DC=com Default-First-Site-Name\DomainController via RPC DC object GUID: <source DCs ntds settings object object guid> Last attempt @ <Date Time> failed, result 8446 (0x20fe): The replication operation failed to allocate memory. 1358 consecutive failure(s). Last success @ <Date & Time>. Source: Default-First-Site-Name\DomainController ******* 1359 CONSECUTIVE FAILURES since <Date Time> Last error: 8446 (0x20fe): The replication operation failed to allocate memory. -
DCPROMO 失败,出现错误 1130。
06/05 09:55:33 [INFO] Error - Active Directory could not replicate the directory partition CN=Configuration,DC=contoso,DC=com from the remote domain controller 5thWardDC1.contoso.com. (1130) 06/05 09:55:33 [INFO] NtdsInstall for domain.net returned 1130 06/05 09:55:33 [INFO] DsRolepInstallDs returned 1130 06/05 09:55:33 [ERROR] Failed to install to Directory Service (1130) Non critical replication returned 1130 err.exe 1130 ERROR_NOT_ENOUGH_SERVER_MEMORY / Not enough server storage is available to process this command. -
NTDS 复制和具有 8466 状态的 NTDS 常规事件记录在目录服务事件日志中。
事件源 事件 ID 事件字符串 NTDS 复制 1699 本地域控制器未能检索为以下目录分区请求的更改。 因此,无法在以下网络地址将更改请求发送到域控制器。 8446 复制操作未能分配内存 NTDS General 1079 Active Directory 无法分配足够的内存来处理复制任务。 复制可能会受到影响,直到可用更多内存增加物理内存或虚拟内存量并重启此域控制器 -
尝试使用 Repadmin 或 Active Directory 站点和服务手动启动复制时,会收到以下错误消息:
尝试将命名上下文
Contoso.com从域控制器<源 DC 同步到域控制器<目标 DC>> 期间发生以下错误: 复制操作未能分配内存。 此操作不会继续。
- 域控制器可能无响应,重新启动将提供临时解决方法。
原因
8446 (操作未能分配内存。如果 Active Directory 复制引擎无法分配内存来执行 Active Directory 复制,则此操作不会继续)状态。
这些事件可能由于以下条件而发生
- 可用物理内存不足。
- 低可用分页文件大小与物理内存(分页文件配置错误):分页文件的大小应是物理内存大小的 1.5 倍。
- 内核中的分页池或非分页池耗尽。
- 虚拟内存耗尽可能是 LSASS 用户模式进程中的泄漏,或者数据库缓存(ESE 缓存)可能占用所有可用内存。
以下信息对于理解非常重要
Lsass.exe域控制器上的内存使用率有两个主要组件:一个固定组件和一个变量。
固定组件由代码、堆栈、堆和各种固定大小的数据结构(例如架构缓存)组成。 LSASS 使用的内存量可能因计算机上的负载而异。 随着正在运行的线程数的增加,内存堆栈的数量也会增加。 Lsass.exe通常使用 100 MB 到 300 MB 的内存。 无论计算机中安装了多少 RAM,Lsass.exe都使用相同的内存量。
变量组件是数据库缓冲区缓存。 缓存的大小范围可以从不到 1 MB 到整个数据库的大小。 由于较大的缓存提高了性能,因此 AD(ESENT)的数据库引擎会尝试尽可能大地保留缓存。 虽然缓存的大小因计算机内存压力而异,但缓存的最大大小受计算机中安装的物理 RAM 量和可用虚拟地址空间(VA)的限制。 AD 只对缓存使用总 VA 空间的一部分。
解决方法
确定以下资源是否耗尽并修复了根本原因:
- 物理 RAM
- 页面文件
- 分页池或非分页池耗尽
域控制器可伸缩性
数据库缓存使用 LSASS 进程的所有可用虚拟内存,因此内存泄漏并不容易识别。 在此处了解发生哪种类型的情况。
使用数据库计数器运行性能监视器,并查看以下计数器:
- LSASS - 工作集
- LSASS - 虚拟字节
- 数据库 - “数据库缓存大小”
如果存在虚拟内存过高且主要用途不用于数据库缓存的提示,则可以使用 Windows 性能记录器堆快照调查行为。
建议在数据库缓存增长到正常大小和预期大小后启动堆快照。 然后,使用 Windows 性能记录器通过记录堆快照中的 步骤创建堆快照。
可以使用 公共符号 调查未完成分配的堆栈。 若要深入诊断结果,建议使用Microsoft支持打开服务请求。
数据收集
如果需要Microsoft支持方面的帮助,建议按照使用 TSS 收集 Active Directory 复制问题的信息中所述的步骤收集信息。