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

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

適用対象: Windows Server 2012 R2
元の KB 番号: 3149779

概要

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

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

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

この記事で説明するレジストリ キーは、「現象」セクションで説明されている問題が発生しているドメイン コントローラー (DC) と Lightweight Directory Services (LDS) サーバーにのみ適用する必要があります。 この問題は、Windows Server 2012、Windows Server 2012 R2、Windows Server 2016 DC で発生する可能性があります。 ここで示されている推奨事項に従うと、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 進数 シンボリック フレンドリー
    000020D9 8409 ERROR_DS_DATABASE_ERROR データベース エラーが発生しました

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

イベント ログ エントリ

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

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

詳細

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

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

注:

  • ガベージ コレクションは、グループ メンバーシップ リンクの削除の処理とは関係ありません。
  • 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 バージョン ストアの増加と組み合わせることができます。 バージョンストアを増やした理由がある場合は、バージョンストアを増やすか、 リンクプロセスのバッチサイズ の値をそれほど減らさないかを決定できます。

詳細については、次の記事を参照してください。

回避策

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

データ収集

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

関連情報

詳細については、次の記事を参照してください。