リンクが多い Active Directory オブジェクトを削除すると、レプリケーションエラーが発生する

この記事では、多数の前方リンクを含む Active Directory オブジェクトを削除するときに発生する問題の回避策について説明します。

元の KB 番号: 3149779

まとめ

この記事では、多数の前方リンクを含む Active Directory オブジェクトを削除するときに発生する問題について説明します。 次にいくつか一般的な例を挙げます。

  • グループ メンバーシップ (メンバー属性)
  • ローミング ユーザー資格情報 (ms-PKI-AccountCredentials 属性)
  • 読み取り専用ドメイン コントローラー (RODC) で公開されているユーザー リンク (mds-revealedusers 属性)

問題が発生し始めるリンクの数は、50,000 個まで少ない場合があります。 1 つのオブジェクトには、数百万のリンクが存在する可能性があります。

この記事で説明するレジストリ キーは、「現象」セクションで説明されている問題が発生しているドメイン コントローラー (DC) およびライトウェイト ディレクトリ サービス (LDS) サーバーにのみ適用する必要があります。 ここで示す推奨事項に従うことで、Active Directory レプリケーションのパフォーマンスが低下する可能性がありますが、このような大きなオブジェクトの削除を正しく処理する信頼性が向上します。

現象

多数の前方リンクを含む Active Directory オブジェクトを削除すると、レプリケーションエラーが発生する可能性があります。 たとえば、大きなメンバーシップ セットを持つグループを削除したり、RODC でパスワードが公開されているユーザー アカウントへのリンクが多数ある RODC コンピューター アカウントを降格して削除したりします。

次の条件は、このソリューションが問題に適用される主要なインジケーターです。

  • フォレストの機能レベルは Windows Server 2003 以降のバージョンの Windows Server であるため、リンク値のレプリケーションが使用されます。

  • イベント 2094 (レプリケーションの遅延) は、同じ削除されたオブジェクトを参照して複数回発生します。

  • イベント 1083 と 1955 (書き込みの競合) は、同じ削除されたオブジェクトを参照する 2094 イベントのログに近接して記録されます。

  • 影響を受けるドメイン コントローラー (DC) は、バージョン ストアが使い果たされたことを報告する場合もあります (イベント ID 623)。 このシナリオでは、バージョン ストアの枯渇が常に発生するとは限りません。 バージョン ストアの枯渇の可能性を高めるその他の要因としては、Active Directory オブジェクトに対する高い変更率 (ローカルとレプリケートの両方) や、詳細クエリなどの実行時間の長い操作などがあります。

  • Active Directory レプリケーションがエラー 8409、エラー "データベース エラーが発生しました"、または次の表に記載されている関連する状態コードを示すその他のイベントで失敗します。

    16 進値 10 進法 シンボル Friendly
    000020D9 8409 ERROR_DS_DATABASE_ERROR データベース エラーが発生しました

    Active Directory のごみ箱が有効になっている場合、オブジェクトが削除された後、レプリケーション エラーが 60 ~ 180 日間 (削除されたオブジェクトの有効期間) 発生しない可能性があります。 この問題は、オブジェクトが削除された状態からリサイクルされた状態に移行したときに発生します。

イベント ログ エントリ

問題が発生すると、次のイベントがログに記録されます。

ログ名: ディレクトリ サービス
ソース: Microsoft-Windows-ActiveDirectory_DomainService
イベント ID: 2094
タスク カテゴリ: レプリケーション
レベル: 警告
キーワード: クラシック
説明: パフォーマンスの警告: 次のオブジェクトに変更を適用しているときにレプリケーションが遅延しました。 このメッセージが頻繁に発生する場合は、レプリケーションの実行速度が遅く、サーバーが変更に対応するのが難しい可能性があることを示します。
オブジェクト DN: <オブジェクト名>
オブジェクト GUID: <object GUID>
パーティション DN: DC=contoso,DC=com
サーバー: xxxx-xxxx-xxxx-xxxx-xxxxxxx._msdcs.contoso.com
経過時間 (秒): 11
ユーザーの操作
この遅延が発生する一般的な理由は、このオブジェクトが特に大きいため、値のサイズまたは値の数です。 まず、オブジェクトに格納されるデータの量を減らすためにアプリケーションを変更できるか、値の数を減らすことができるかを検討する必要があります。 これが大規模なグループまたは配布リストの場合は、フォレストの機能レベルを Windows Server 2003 以上に引き上げることを検討してください。これにより、レプリケーションをより効率的に機能させることができます。 サーバー プラットフォームがメモリと処理能力に関して十分なパフォーマンスを提供するかどうかを評価する必要があります。 最後に、データベースとログを別々のディスク パーティションに移動して、Active Directory ドメイン Services データベースをチューニングすることを検討できます。
警告の制限を変更する場合は、レジストリ キーを以下に示します。 値が 0 の場合、チェックは無効になります。
追加データ
警告の制限 (秒): 10
レジストリ キーの制限: System\CurrentControlSet\Services\NTDS\Parameters\Replicator maximum wait for update object (secs)
ログ名: ディレクトリ サービス
ソース: Microsoft-Windows-ActiveDirectory_DomainService
イベント ID: 1083
タスク カテゴリ: レプリケーション
レベル: 警告
キーワード: クラシック
説明:
Active Directory ドメインサービスは、次のネットワーク アドレスでディレクトリ サービスから受信した変更で次のオブジェクトを更新できませんでした。これは、Active Directory ドメイン Services が処理中の情報であるためです。
オブジェクト: <オブジェクト名>
ネットワーク アドレス: xxxxx-xxxx-xxxx-xxxx-xxxxxxx._msdcs.contoso.com
この操作は後で再試行されます。
ログ名: ディレクトリ サービス
ソース: Microsoft-Windows-ActiveDirectory_DomainService
イベント ID: 1955
タスク カテゴリ: レプリケーション
レベル: Information
キーワード: クラシック
ユーザー: 匿名ログオン
説明: Active Directory ドメインサービスで、レプリケートされた変更を次のオブジェクトに適用するときに書き込みの競合が発生しました。
オブジェクト: <オブジェクト名>
時間 (秒): 48
このエントリの前のイベント ログ エントリは、更新が受け入れられたかどうかを示します。
書き込みの競合は、同じオブジェクトに対する同時変更や、このオブジェクトを参照する属性を持つ他のオブジェクトへの同時変更によって発生する可能性があります。 これは通常、オブジェクトが多数のメンバーを持つ大規模なグループを表し、フォレストの機能レベルが Windows 2000 に設定されている場合に発生します。 この競合により、更新の再試行が追加されました。 システムが低速に見える場合は、これらの変更のレプリケーションが発生している可能性があります。
ユーザーの操作
この操作には小さいグループを使用するか、フォレストの機能レベルを Windows Server 2003 に上げます。

詳細

既定では、前方リンクと下位リンクの数が非常に多い Active Directory オブジェクトを削除すると、一度に 10,000 個のリンクが削除されます。 この間に、他のスレッドがこれらのリンクのターゲット オブジェクトを更新した場合、リンク削除トランザクションは、オブジェクトが再び使用可能になるまで中断されます。 この中断により、削除トランザクション全体の完了に長い時間がかかる場合があります。 この間、他のレプリケーション タスクは、この実行時間の長いタスクによって保持されます。 たとえば、パスワードとグループ メンバーシップの更新がフォレスト全体で進行していないことがわかります。

この更新が保留中の間、管理者は書き込みの競合やトランザクションエラーイベントを見る可能性があります。 また、追加のオブジェクトがレプリケーションによって処理されるため、保留中の大規模なトランザクションでは、削除トランザクションが完了するまで割り当てられたバージョン ストアが解放されないため、より多くのバージョン ストアが割り当てられます。 これにより、バージョン ストアのエラーとレプリケーションの警告イベントが発生する可能性があります。

Note

  • ガベージ コレクションは、グループ メンバーシップ リンクの削除の処理とは関係ありません。
  • TSL を減らすことは、リンクの削除を高速化する有効な方法ではありません。
  • Links プロセス のバッチ サイズのレガシ値は、Windows Server 2008 R2 より前のバージョンでは 1,000 です。 それ以降のバージョンでは、ごみ箱が有効になっているフォレストでの削除のパフォーマンスを向上させるために、バッチ サイズが 10,000 に増加します。
  • Links プロセスバッチ サイズ パラメーターの値を確認します。 既定値以外の場合は、値を既定値に戻すか、1,000 や 100 などのさらに小さい値に設定します。

値を小さくすると、削除ごとに削除するオブジェクトの数が少なくなり、1 回の削除トランザクションを実行する合計時間が短縮されるため、バージョン ストアの使用量が減少します。 これにより、ディレクトリ内のグループ メンバーシップを正確に反映するために必要な時間を増やしながら、書き込みの競合に対するバージョン ストアと時間枠を減らすという肯定的な副作用があります。

Active Directory サービスは、次のレジストリ キーを確認します。

AD DS の場合:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters\Links process batch size

AD LDS の場合:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<adam instance>\Parameters\Links process batch size
型: DWORD
最小値: 100
最大値: 10000

この値は、一度に処理するアトミック リンクの数として既定値の 10,000 をオーバーライドします。 NTDS または LDS インスタンス サービスを再起動したり、設定を有効にするためにコンピューターを再起動したりする必要はありません。

各アトミック操作の後、対応するバージョン ストアが解放されます。 バージョン ストアは、同じオブジェクトの処理を続行する次のアトミック操作中にのみ再取得されます。 リンク バッチ サイズを大きく減らすことについて、もう一度考えるかもしれません。 これを ESE バージョン ストアの増加と組み合わせることができます。 バージョン ストアを増やした理由が考えられる場合は、バージョン ストアを増やすか、 Links プロセスのバッチ サイズ 値を大きく減らさないかを決定できます。

詳細については、次の記事をご覧ください。

回避策

この問題を回避するには、 Links プロセスのバッチ サイズの値を設定 10,000 未満にします。 これにより、オブジェクト アクセスの競合が発生する可能性が低下します。 これにより、ラージ オブジェクト削除のレプリケーション プロセスの信頼性が高くなります。 また、トランザクション全体の完了に時間がかかります。 これは、バージョン ストアの枯渇を回避するのにも役立ちます。

データ収集

Microsoft サポートからのサポートが必要な場合は、「 Active Directory レプリケーションの問題に TSS を使用して情報を収集する」に記載されている手順に従って情報を収集することをお勧めします

関連情報

詳細については、次の記事をご覧ください。