本文介绍 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 复制问题的信息中所述的步骤收集信息。