Windows 2000 または Windows Server 2003 が実行されているドメイン コントローラにファイルをコピーすると、ネットワークのパフォーマンスが低下する

文書翻訳 文書翻訳
文書番号: 321098 - 対象製品
この記事は、以前は次の ID で公開されていました: JP321098
重要 : この資料には、レジストリの編集方法が記載されています。万一に備えて、編集の前には必ずレジストリをバックアップし、レジストリの復元方法を理解しておいてください。バックアップ、復元、および編集方法の詳細を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
256986 Microsoft Windows レジストリの説明
すべて展開する | すべて折りたたむ

現象

Microsoft Windows 2000 ベースのクライアント コンピュータ、Microsoft Windows XP ベースのクライアント コンピュータまたは Microsoft Windows Server 2003 ベースのクライアント コンピュータから、Windows 2000 または Windows Server 2003 が実行されているドメイン コントローラ上のネットワーク共有にファイルをコピーすると、同じファイルを Windows 2000 または Windows Server 2003 を実行しているメンバ サーバーにコピーした場合よりもネットワークのパフォーマンスが低下します。この問題は、サイズの小さなファイルを多数コピーした場合に気付きやすく、少数の大きなファイルをコピーした場合には気付きにくいことがあります。この問題は、エクスプローラを使用してファイルをコピーするか、エクスプローラのウィンドウが開いていて、コピー先のサーバーに接続した場合にのみ発生します。ファイルのコピーに Xcopy.exe を使用し、エクスプローラのすべてのウィンドウが閉じられている場合には、この問題は発生しません。

原因

この問題は、Windows 2000 または Windows Server 2003 を実行しているドメイン コントローラへのサーバー メッセージ ブロック (SMB) の書き込み処理で、ファイルのコピーから次のコピーまでの間に最大 200 ミリ秒の遅延が発生することがあるために発生します。

問題のトレースを確認すると、クライアントが、コピー先のフォルダの FID エントリに一致する FID エントリを持つ SMB Notification Change コマンドをサーバーに送信した後に遅延が発生していることがわかります。エクスプローラは、右側のウィンドウに表示されるフォルダに何らかの変更があった場合に通知するように要求する変更通知要求をネットワーク共有にポストします。ドメイン コントローラは変更通知要求を受け取ってもただちに応答せず、最大 200 ミリ秒間パケットを送信しません。ドメイン コントローラはその時点で、TCP (Transmission Control Protocol) の受信確認 (ACK) パケットを送信し、ファイルの処理を通常どおりに再開します。

この現象は、Windows 2000 の 2 つのコア ネットワーク コンポーネントである TCP 遅延 ACK とドメイン コントローラのスレッド優先順位付けの間の相互作用の結果です。スレッドの優先順位付けにより、ドメイン コントローラは、変更通知要求への応答などの SMB 処理より、ディレクトリ サービスとアカウント管理操作を優先します。

解決方法

警告 : レジストリ エディタまたは別の方法を使用してレジストリを誤って変更すると、深刻な問題が発生することがあります。最悪の場合、オペレーティング システムの再インストールが必要になることがあります。マイクロソフトは、レジストリの変更により発生した問題に関しては、一切責任を負わないものとします。レジストリの変更は、自己の責任において行ってください。
この問題を考える場合、非常に限られた環境でのみ発生することに注意してください。この問題は、クライアントがエクスプローラを使用して、多数のファイルを Windows 2000 ベースのドメイン コントローラにコピーした場合にのみ発生します。遅延 ACK タイマの値を変更すると、いくらか現象の発生を抑制することができますが、コア TCP/IP 値を変更すると、将来予測しない結果が発生する可能性があります。そのため、マイクロソフトでは、タイマを変更する前に他の代替方法を考えることをお勧めします。その他の解決方法には、ファイル共有をメンバ サーバーに移動することや、多数のファイルをドメイン コントローラにコピーする場合に、別のツール (Xcopy や Windows 2000 リソース キットに含まれる Robocopy など) を使用することなどが挙げられます。

ドメイン コントローラで、TcpDelAckTicks レジストリ値を編集することにより、TCP 遅延 ACK タイマを調整できます。TCP 遅延 ACK タイマを低い値に変更すると、サーバーは短い間隔で頻繁に ACK パケットを送信するようになります。

遅延が大きく、かつ著しく飽和したセグメントでは、ドメイン コントローラからの ACK パケットの増加によって、ネットワークにさらに負荷がかかることになる可能性があります。変更した TCP 遅延 ACK タイマの値が、さらなるボトルネックの原因とならないようにするために、変更値は十分にテストする必要があります。

ネットワークで余分な ACK パケットを処理できる場合、次の Service Pack 3 (SP3) 以前の修正プログラムを Windows 2000 Service Pack 2 (SP2) に適用することで、遅延 ACK タイマの値を変更できるようになります。

311833 TcpDelAckTicks レジストリ値が Ack タイムアウトに影響しない
この修正プログラムの適用後、次の手順を実行して、遅延 ACK タイマのカスタム パラメータを指定する次のレジストリ値を追加します。
  1. レジストリ エディタ (Regedt32.exe) を起動します。
  2. レジストリの次のキーを見つけて、クリックします。Adapter GUID はクライアントに接続するネットワーク アダプタのグローバル一意識別子 (GUID) です。
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\Adapter GUID
  3. [編集] メニューの [値の追加] をクリックし、次のレジストリの値を追加します。
    値の名前 : TcpDelAckTicks
    データの種類 : REG_DWORD
    値のデータ : この値は 0 〜 6 の範囲で設定できます。デフォルトの設定は 2 (200 ミリ秒) です。
  4. レジストリ エディタを終了します。
  5. 変更を有効にするため、Windows を再起動します。
このレジストリ値は、インターフェイス単位で遅延 ACK タイマに使用される 100 ミリ秒間隔の数値を指定します。デフォルトで遅延 ACK タイマの値は 200 ミリ秒です。TcpDelAckTicks 値を 0 に設定すると、遅延 ACK が無効になります。この設定では、コンピュータは受信したすべてのパケットに対して、直ちに ACK パケットを送信します。

: アダプタ固有の値は各アダプタのサブキーの下に表示されます。TcpDelAckTicks 値は必ず次のレジストリ キーに追加してください。
HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\Adapter GUID
この値を次のレジストリ キーに追加しないでください。
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\

状況

マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。

詳細

ネットワーク トレースでは、クライアントが "SMB: C NT transact - Notify Change" パケットを送信したことが確認できます。Windows 2000 ベースのドメイン コントローラは 200 ミリ秒後にクライアントに ACK パケットを送り返します。クライアントは ACK パケットを受信した後、次の SMB 処理を開始し、次のファイルをコピーします。

: ネットワーク モニタを使用している場合、次のフィルタを使用すれば、遅延が明確に確認できます。
SMB:Command == 0xA0 ( NT transact )
このフィルタは次の表示オプションと組み合わせて使用します。
Time: (x) 直前のフレームからの秒数
次の SMB フレーム属性を調べることで、対応する要求と応答を識別できます。
SMB: Multiplex ID (MID)
遅延 ACK 機能は、RFC (Request for Comments) 1122 に基づきます。TCP は遅延 ACK を使用して、ネットワークで送信されるパケット数を削減します。Microsoft TCP/IP スタックでは、一般的なアプローチを取り、遅延 ACK を実装しています。接続で TCP によってデータが受信されると、スタックは次のいずれかの条件が満たされている場合に限り、ACK を返します。
  • 条件 1 : 前に受信したセグメントに対して ACK が送信されていない
  • 条件 2 : セグメントを受信し、200 ミリ秒 (デフォルト値) 以内にその接続の別のセグメントが到着しない
一般に ACK は遅延 ACK タイマ (200 ミリ秒) が期限切れにならない限り、特定の接続で受信された TCP セグメント 1 つおきに送信されます。この資料の「解決方法」で説明している手順を実行して、TcpDelAckTicks レジストリ値 (この値は Windows 2000 から加わりました) を追加することによって、遅延 ACK タイマを調整できます。

: TcpDelAckTicks レジストリ値を変更すると、将来予測しない影響が発生する可能性があることに注意してください。そのため、タイマを変更する前に、他の代替方法を考えることをお勧めします。

この遅延は、直前のパケットが受信確認され、変更通知要求の応答がドメイン コントローラにより 200 ミリ秒を超える時間のあいだ、キューに入れられている場合に発生します。デフォルトの ACK タイマは 200 ミリ秒であるため、クライアントからの変更通知要求の受信後 200 ミリ秒後に TCP ACK パケットが生成されます。クライアントはサーバーからの応答を待ってから、次の SMB 処理を続行するため、サーバーの遅延 ACK タイマ値の時間だけ遅延が生じます。ネットワーク トレースを実行すると、クライアントからのすべての変更通知要求で遅延が発生しているわけではないことがわかります。

遅延が発生しない変更通知要求は受信確認されていない別のパケットの直後に続くものです。つまり、この「詳細」の冒頭で説明した最初の状況が満たされるため、ドメイン コントローラの受信確認は遅延しません。遅延が発生する通知変更要求は直前のパケットが受信確認されています。つまり、この「詳細」で説明した 2 番目の状況が発生したため、遅延 ACK タイマの期限が切れる (デフォルト値は 200 ミリ秒) まで、ドメイン コントローラは応答を返しません。

ドメイン コントローラのスレッド優先順位付けは変更できないため、この資料の「現象」に説明した現象の発生を回避するには、TCP 遅延 ACK タイマの値を小さく変更する必要があります。そうすると、サーバーは短い間隔で頻繁に ACK パケットを送信するようになります。

TcpDelAckTicks レジストリ値の詳細については、次のマイクロソフト Web サイトにあるホワイト ペーパーを参照してください。
Microsoft Windows 2000 TCP/IP 実装の詳細
この問題の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
270926 Windows 2000 でネットワーク ファイル コピーに関する問題のトラブルシューティングを行う方法
Windows XP または Windows Server 2003 を実行するクライアントでは、遅延 ACK タイマの値に達する前に、TCP ACK を制御する TcpAckFrequency という名前の新しいレジストリ キーが導入されています。 関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
328890 Windows XP および Windows Server 2003 で TCP ACK の動作を制御するための新しいレジストリ エントリ
関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
321169 Windows XP から Windows 2000 のドメイン コントローラにファイルをコピーするときに SMB のパフォーマンスが低下する

プロパティ

文書番号: 321098 - 最終更新日: 2005年12月20日 - リビジョン: 4.1
この資料は以下の製品について記述したものです。
  • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • Microsoft Windows 2000 Service Pack 3
  • Microsoft Windows 2000 Service Pack 2
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows 2000 Advanced Server
キーワード:?
kbprb KB321098
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com