域与目录服务

故障排除事件 ID 2866(缓存审核最大事件数) - Windows Server

· 52CE 我爱测

概要 本文讨论如何在受支持的 Windows Server 版本上解析事件 ID 2866。 修改 Active Directory 域服务(AD DS)中的对象时,将发生事件 ID 2866,这些作会生成足够的安全日志审核事件来重载本地事务审核队列。 本文讨论这一问题的两个主要原因、如何确定哪个原因适用于你的情况,以及如何解决此问题,以便 AD DS操作可以恢复。 症状 修改 AD DS 对象。 用于进行更改的域控制器(DC)已启用审核日志记录。 域控制

概要

本文讨论如何在受支持的 Windows Server 版本上解析事件 ID 2866。 修改 Active Directory 域服务(AD DS)中的对象时,将发生事件 ID 2866,这些作会生成足够的安全日志审核事件来重载本地事务审核队列。 本文讨论这一问题的两个主要原因、如何确定哪个原因适用于你的情况,以及如何解决此问题,以便 AD DS操作可以恢复。

症状

修改 AD DS 对象。 用于进行更改的域控制器(DC)已启用审核日志记录。 域控制器还被配置为审核您所做的更改。 在此方案中,修改开始失败。 在 DC 上,安全日志记录事件 ID 2866。 事件文本类似于以下示例:

While logging audit events for the following object, the directory service reached the maximum number of audit events that could be cached in memory at any given time. As a result of reaching this limit, the operation was aborted.

Maximum number of audit events that can be cached: 17000

Distinguished name of object:

CN=xxxxx,OU=Groups,DC=Contoso,DC=com

Generally, this occurs if there are a large number of changes being performed on attributes that require auditing. An example of such an operation could be deleting the membership of a large group, where the 'member' attribute is being audited.

Additional Data from the Audit Event
Attribute name or old distinguished name:
<Attribute name>

Attribute value or new distinguished name:
<XXXXXXXXXX>

User Action 
(1) Check that an excessive number of object creation, modification, move, rename or undelete operations are not being performed.
(2) Check that an excessive amount of auditing is not enabled. For example, confirm that auditing is not configured for more attributes than is necessary.
(3) If necessary, increase the size of the audit queue by increasing the 'Maximum Audit Queue Size' registry parameter.

通常,此事件发生在以下方案之一中。

方案 1

对 AD DS 对象进行批量更改。 这些对象已对多种类型的操作启用审核功能。

更改作失败,安全日志记录事件 ID 2866。 此事件指示更改生成的审核事件的速率使事务审核队列无法管理这些事件。 因此,DC 耗尽了审核队列空间。

方案 2

对具有多个值的属性的一组对象进行批量更改。 可以将这些值替换为若干值(或空值)。 更改失败,你会收到错误代码 0x21B1,如以下示例所示:

ldap_modify_s(ld, 'CN=test-many-members01,OU=TEST01,DC=contoso,DC=com',[1] attrs);
Error: Modify: Operations Error.< 1>
Server error: 000021B1: SvcErr: DSID-0315155D, problem 5005 (UNABLE_TO_PROCEED), data 0

Error 0x21B1 A required audit event could not be generated for the operation.

你使用的应用程序也可能报告此错误。 安全日志记录记录记录一个对象更改的事件,如以下示例所示:

Log Name: Security
Source: Microsoft-Windows-Security-Auditing
Event ID: 4662
Task Category: Directory Service Access
Level: Information
Keywords: Audit Success
Description:
An operation was performed on an object.

Subject:
Security ID:      
S-1-5-21-3905871866-2182712795-2692410964-142473
Account Name:      <User>
Account Domain:    CONTOSO
Logon ID:          0x17F8710266

Object:
Object Server:     DS
Object Type:       %{bf967a9c-0de6-11d0-a285-00aa003049e2}
Object Name:       %{<guid>}
HandleID:          0x0

Operation:
Operation Type:    Object Access
Accesses:          Write Property
Access Mask:       0x20
    
Properties:        %%7685
                  {bc0ac240-79a9-11d0-9020-00c04fc2d4cf}
                  {bf9679c0-0de6-11d0-a285-00aa003049e2}
                  {bf967a9c-0de6-11d0-a285-00aa003049e2}

安全日志记录上述事件几秒后,它会记录事件 ID 2866。 事件 ID 2866 引用与更改事件相同的对象。

注释

在此示例中,GUID bc0ac240-79a9-11d0-9020-00c04fc2d4cf 表示 member 正在修改的属性架构,而不是对象本身。

原因

审核事件包含有关安全相关事件的信息,例如读取 AD DS 对象、用户登录尝试、对安全策略的更改,以及对特定对象(如组)的更改。 当 AD DS 生成审核事件时,本地安全机构(LSA)必须写入 事件并将其 刷新到磁盘上的安全日志文件。 事务审核队列是一个内存空间,用于缓冲审核事件,直到 LSA 处理事件。 LSA 完成记录事件后,它会从事务审核队列中清除该事件。

在高负载下(例如,在批量操作期间),可以在仍然将第一个审核事件写入磁盘时生成多个审核事件。 当审核事件数达到队列的最大数目时,操作线程将开始暂停,直到其审核事件可以插入队列。 此时,AD DS 记录事件 ID 2866。

原因 1:审核事件累积的速率大于系统可以处理的速率

AD DS 正在生成审核事件的速率持续高于 DC 能够将其写入日志文件和从队列中清除的速率。 队列最终达到其最大大小。

AD DS 生成审核事件的速率取决于以下几个因素:

原因 2:单个事务生成过多的审核事件

当 DC 审核级别设置为记录每个成功更改的审核事件时,AD DS 会为每个属性更改生成此类事件。 更改链接属性时,例如 member,更改将传播到具有相关属性的其他对象。 例如,使用类似于以下命令的命令修改组对象:

changetype: modify
replace: member
member:

这些命令删除所有当前值 member。 每个值标识另一个对象(组成员),其中每个对象都有 memberof AD DS 自动维护的属性。 事务(删除所有组成员)会生成一个用于组对象更改的审核事件,以及多个用于成员对象更改的审核事件。 这些审核事件可以在事务审核队列中快速累积,因为 LSA 仅在事务成功完成时开始写入事件。

事务审核队列可以保留的这些审核事件数的默认限制为 17,000。 如果单个事务超过该限制,事务将返回错误代码 0x21B1 并回滚更改。 安全日志记录事件 ID 2866。 启动事务的应用程序会收到错误。 但是,根据事务使用的确切命令,应用程序可能不会收到有关生成的事务更改数的信息。

注释

每个 LDAP 事务建议的最大操作次数为 5,000。 如果数字大于 5,000,则面临资源和性能问题的风险。 早期版本的 Windows Server 建议每个组 5,000 个成员的限制。 尽管 Windows Server 2003 删除了该限制,但每个 LDAP 事务的作数的建议限制仍然存在。 有关详细信息,请参阅“Active Directory 最大限制 - 可伸缩性”的以下部分:

决议

用于解决此问题的特定方法取决于原因:

  • 审核事件累积的速率大于系统可以处理的速率。

    1. 减少审核事件量。
    2. 如果步骤 1 无法解决问题,请考虑 增加事务审核队列的容量。
  • 单个事务生成过多的审核事件。

    1. 请考虑减少每个事务的操作次数。
    2. 减少受影响操作或对象的审核事件量。
    3. 如果前面的步骤不实用或有效, 请增加事务审核队列的容量。

方法 1:减少每个事务的操作数量

如果可以更改客户端应用程序或管理多值属性和链接属性的方式,此方法可能可行。 通过更改客户端应用程序与 AD DS 交互的方式(或管理属性的方式),减少单个事务中的最大作数。

方法 2:减少审核事件量

若要降低系统生成审核事件的总体速率,请查看哪些对象和作生成审核事件。 请考虑是降低审核级别还是审核对象类型更少。 有关如何更改特定对象和操作的审核设置的信息,请参阅以下文章:

有关审核策略和建议设置的信息,请参阅本文的 “参考” 部分。

方法 3:增加事务审核队列的容量

重要

此部分(或称方法或任务)介绍了修改注册表的步骤。 如果您错误地修改注册表,可能会出现严重问题。 因此,请确保仔细执行这些步骤。 出于防范目的,请在修改之前备份注册表,以便在出现问题时还原注册表。 有关如何备份和恢复注册表的更多信息,请参见如何在 Windows 中备份和恢复注册表。

更改队列容量之前,请考虑更改如何影响系统的性能。 此注册表项没有超出未签名的 32 位值上限的上限。 但是,建议使用默认值。 增加该值会增加 DC 上的负载,并可能通过以下方式降低 DC 性能:

  • 队列使用更多内存。
  • 安全日志可能会使用更多磁盘空间。
  • 审核事件需要更长的时间才能处理。

注释

如果问题是大量审核事件(而不是每个事务的审核事件数),这些性能影响会限制增加队列容量的有用性。 尽管增加的容量可以提供更多空间来缓冲事件的突发,但它不会更改 DC 可以管理事件的速率。

若要增加事务审核队列的容量,请执行以下步骤:

  1. 在 DC 上的注册表编辑器中,导航到 HKLM\System\CurrentControlSet\services\NTDS\Parameters 子项。

  2. 在此子项下,使用以下信息创建条目:

    • 值:Maximum Audit Queue Size

    • 类型:REG_DWORD

    • 数据:一个整数,介于 100 和 4294967295 之间。 默认值为 17000。

      注释

      数据值度量队列可以缓存的审核事件数。 它不测量内存使用情况。 如果您的问题是每个事务的审计事件数量,请确保您使用的数量足够处理这些事件。 例如,使用大于最大组成员数的数字。

  3. 重启 DC。

References

资料来源与适用范围

资料来源
微软官方中文故障文档
适用范围
适用于你的情况,以及如何解决此问题,以便 AD DS操作可以恢复。
内容语言
中文;命令、路径和错误标识保留技术原文
本地收录日期
2026-10-26
授权说明
CC BY 4.0

正文与所需资源由本站本地存储。查看来源及更新记录 ↗

请按适用版本和实际日志确认原因;本站没有对每一种系统或设备逐项执行文中的操作。