SMB ファイル転送速度の低下

この記事では、SMB によるファイル転送速度の低下に関する推奨されるトラブルシューティング手順について説明します。

ファイルの転送速度が遅い

ファイルの転送速度が遅い場合は、次の手順を検討してください。

  • バッファーされていない IO (xcopy /J または robocopy /J) に対して、ファイル コピー コマンドを実行します。

  • ストレージの速度をテストします。 これは、ファイル コピーの速度がストレージの速度によって制限されるためです。

  • ファイルのコピーはすぐに開始され、その後速度が低下することがあります。 この状況を確認するには、次のガイドラインに従ってください。

    • これは通常、初期コピーがキャッシュまたはバッファー (メモリ内または RAID コントローラーのメモリ キャッシュ内) にある場合に発生し、キャッシュが不足します。これにより、データが強制的にディスクに直接書き込まれます (ライトスルー)。 これは、より遅いプロセスです。

    • ストレージ パフォーマンス モニター カウンターを使用して、時間の経過と共にストレージのパフォーマンスが低下するかどうかを判断します。 詳細については、「SMB ファイル サーバーのパフォーマンス チューニング」を参照してください。

  • RAMMap (SysInternals) を使用して、空きメモリ不足のためにメモリ内の "マップされたファイル" の使用の増加が停止するかどうかを判断します。

  • トレースのパケット損失を検索します。 これにより、TCP 輻輳プロバイダーによって調整が発生する可能性があります。

  • SMBv3 以降のバージョンでは、SMB マルチチャネルが有効で動作していることを確認してください。

  • SMB クライアントで、SMB の大きな MTU を有効にし、帯域幅調整を無効にします。 そのためには、次のコマンドを実行します。

    Set-SmbClientConfiguration -EnableBandwidthThrottling 0 -EnableLargeMtu 1
    

小さいファイルの転送速度が遅い

SMB による小さいファイルの転送速度の低下は、多くのファイルが存在する場合に最もよく発生します。 これは予想される現象です。

ファイルの転送中、ファイルの作成により、高いプロトコル オーバーヘッドとファイル システムオーバーヘッドが発生します。 大きなファイル転送の場合、これらのコストは 1 回だけ発生します。 多数の小さなファイルが転送されると、コストが繰り返し発生し、転送速度が低下します。

この問題に関する技術的な詳細は次のとおりです。

  • SMB は、ファイルの作成を要求する create コマンドを呼び出します。 コードによっては、ファイルが存在するかどうかがチェックされ、ファイルが作成されます。 または、create コマンドの一部のバリエーションによって、実際のファイルが作成されます。

  • 各 create コマンドは、ファイル システムに対してアクティビティを生成します。

  • データが書き込まれると、ファイルは閉じられます。

  • しばらくの間、プロセスはネットワーク待機時間や SMB サーバーの待機時間から影響を受けます。 これは、SMB 要求が最初にファイル システム コマンドに変換され、その後、その操作を完了するために実際のファイル システムの待機時間になるからです。

  • ウイルス対策プログラムが実行されている場合、転送速度が低下します。 これは、通常、データはパケット スニファーによって 1 回スキャンされ、ディスクに書き込まれるときに 2 回目のスキャンが行われるためです。 シナリオによっては、これらのアクションが何千回も繰り返される場合があります。 1 MB/秒未満に速度が低下する可能性があります。

Office ドキュメントが開くのが遅い

この問題は、通常、WAN 接続で発生します。 これは一般的なものであり、通常は Office アプリ (特に Microsoft Excel) がアクセスしてデータを読み取る方法が原因です。

Office と SMB バイナリが最新であることを確認し、SMB サーバーでリースが無効になっていることを確認することをお勧めします。 これを行うには、次の手順に従います。

  1. Windows 8 と Windows Server 2012 または以降のバージョンの Windows で、次の PowerShell コマンドを実行します。

    Set-SmbServerConfiguration -EnableLeasing $false  
    

    または、管理者特権でのコマンド プロンプト ウィンドウで次を実行します。

    REG ADD HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters /v DisableLeasing /t REG\_DWORD /d 1 /f  
    

    Note

    このレジストリ キーを設定した後は、SMB2 リースは付与されませんが、oplock は引き続き利用できます。 この設定は、主にトラブルシューティングのために使用されます。

  2. ファイル サーバーを再起動するか、サーバー サービスを再起動します。 サービスを再起動するには、次のコマンドを実行します。

    NET STOP SERVER 
    NET START SERVER
    

この問題を回避するには、ファイルをローカル ファイル サーバーにレプリケートすることもできます。 詳細については、「EFS を使用して Office ドキュメントをネットワーク サーバーに保存すると遅い」を参照してください。