SMB ファイル転送速度の低下
サーバー メッセージ ブロック (SMB) のファイル転送速度は、ファイルのサイズと量、接続の種類、使用するアプリのバージョンによって遅くなる可能性があります。 この記事では、SMB によるファイル転送速度の低下に関するトラブルシューティングの手順について説明します。
転送が遅い
現在のストレージの使用を確認することで、低速なファイル転送のトラブルシューティングを行うことができます。 ファイルの転送速度が遅い場合は、次の手順を検討してください。
バッファーされていない IO に対して、次のファイル コピー コマンドを実行します。
xcopy /J
robocopy /J
ストレージの速度をテストします。 コピーの速度はストレージの速度によって制限されます。
ファイルのコピーはすぐに開始され、その後速度が低下することがあります。 コピー速度の変化は、初期コピーがキャッシュまたはバッファー (メモリ内または RAID コントローラーのメモリ キャッシュ内) にあり、キャッシュが不足した場合に発生します。この変更により、データが強制的にディスクに直接書き込まれます (ライトスルー)。
この状態であることを確認するには、ストレージ パフォーマンス モニター カウンターを使用して、時間の経過と共にストレージのパフォーマンスが低下するかどうかを判断します。 詳細については、「SMB ファイル サーバーのパフォーマンス チューニング」を参照してください。
RAMMap (SysInternals) を使用して、空きメモリ不足のためにメモリ内の "マップされたファイル" の使用の増加が停止するかどうかを判断します。
トレースのパケット損失を検索します。 パケット損失により、TCP 輻輳プロバイダーによる調整が発生する可能性があります。
SMBv3 以降のバージョンでは、SMB マルチチャネルが有効で動作していることを確認してください。
SMB クライアントで、SMB の大きな MTU を有効にし、次のコマンドを実行して帯域幅の調整を無効にします。
Set-SmbClientConfiguration -EnableBandwidthThrottling 0 -EnableLargeMtu 1
小さいファイルの転送が遅い
小さいファイルの転送速度の低下は、多くのファイルが存在する場合に最もよく発生します。 この発生は想定される動作です。
ファイルの転送中、ファイルの作成により、高いプロトコル オーバーヘッドとファイル システムオーバーヘッドが発生します。 大きなファイル転送の場合、これらのコストは 1 回だけ発生します。 多数の小さなファイルが転送されると、コストが繰り返し発生し、転送速度が低下します。
問題の詳細情報です
ネットワーク待機時間、create
コマンド、ウイルス対策プログラムは、小さなファイルの転送が遅くなる原因となります。 この問題に関する技術的な詳細は次のとおりです。
SMB は、ファイルの作成を要求する
create
コマンドを呼び出します。 コードにより、ファイルが存在するかどうかがチェックされた後、ファイルが作成されます。 または、create
コマンドの一部のバリエーションによって、実際のファイルが作成されます。- 各
create
コマンドは、ファイル システムに対してアクティビティを生成します。 - データが書き込まれると、ファイルは閉じられます。
- 各
このプロセスは、ネットワーク待機時間と SMB サーバーの待機時間の悪影響を受ける可能性があります。 この待機時間が発生する理由は、SMB 要求が最初にファイル システム コマンドに変換され、その後、その操作を完了するために実際のファイル システムに送信されるためです。
ウイルス対策プログラムの実行中は、転送速度の低下が続きます。 この変化が発生するのは、データは通常パケット スニファーによって 1 回スキャンされ、データがディスクに書き込まれるときに 2 回目のスキャンが行われるためです。 シナリオによっては、これらのアクションが何千回も繰り返される場合があります。 1 MB/秒未満に速度が低下する可能性があります。
Office ドキュメントが開くのが遅い
Office ドキュメントが開くのが遅くなる場合があります。これは通常、WAN 接続で発生します。 Office アプリ (特に Microsoft Excel) によるデータへのアクセスと読み取り方法が、一般にドキュメントが開くのが遅くなる原因です。
Office と SMB バイナリが最新であることを確認し、SMB サーバーでリースを無効にしてテストしてみます。 両方の状態が解決されたことを確認するには、こちらの手順に従います。
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 は引き続き利用できます。 この設定は、主にトラブルシューティングのために使用されます。
ファイル サーバーを再起動するか、サーバー サービスを再起動します。 サービスを再起動するには、次のコマンドを実行します。
NET STOP SERVER NET START SERVER
この問題を回避するには、ファイルをローカル ファイル サーバーにレプリケートすることもできます。 詳細については、「EFS を使用して Office ドキュメントをネットワーク サーバーに保存すると遅い」を参照してください。