長距離SFTP転送を高速化する方法
SFTP の同時要求数とバッファーを段階的に調整し、圧縮、CPU、ストレージ、ネットワークを測定して長距離転送の制約を特定します。
近いサーバーには速く送れるのに、海外の SFTP サーバーでは回線に余裕があっても速度が伸びない。その場合、同時に処理できる要求数やバッファーが、長い往復遅延に対して不足している可能性があります。一方、CPU やディスクが上限なら、同じ設定を増やしても改善しません。
このガイドでは OpenSSH を使い、測定から調整までを順に進めます。まず既定設定で大ファイルと実際のフォルダーを測り、原因に合う項目を一つずつ変えてください。他のクライアントでは、同様の項目が「要求の並列数」「パケットサイズ」「転送バッファー」などの名前になっていることがあります。
SFTP の仕組みと FTP との違い
SFTPは、暗号化された SSH 接続上でファイル操作を行う転送プログラムです。OpenSSHの公式SFTPマニュアルには、公開鍵認証、圧縮、再帰コピー、再開、同時要求数、転送バッファーが記載されています。
SFTPは「secure FTP」ではありません。従来のFTPは制御接続と、ファイルデータ用の別データ接続を使います。RFC 959はこの構造と、ストリームモードでファイル末尾にデータ接続が閉じる際の接続管理を定義しています。SFTPはSSHの暗号化接続とチャネルのフロー制御を使います。RFC 4254は、送信側がウィンドウ調整を待つまでに移動できる量を決めるSSH チャネルのウィンドウと最大パケットサイズを定義しています。
FTPとSFTPはどちらも距離で遅くなる可能性がありますが、設定と障害の現れ方は異なります。
調整前に測る5つの上限
| 上限 | 記録する値 | 典型的な兆候 |
|---|---|---|
| ネットワークパス | RTT、パケットロス、ジッター、利用可能帯域 | 経路や時間帯で速度が変わる |
| SFTP 要求の並行処理 | 未完了要求数とバッファーサイズ | CPUとディスクが空いているのに回線利用率が低い |
| 暗号化CPU | 転送中のクライアントとサーバーの CPU | 回線を使い切る前に1 コアが飽和 |
| ストレージ | 送信元読み取り、受信先書き込み、IOPS | 大容量ファイルは速いが小ファイル作成で停滞 |
| サーバーポリシー | 帯域、セッション、要求、ストレージ利用枠 | クライアント側の調整を変えても結果が変わらない |
単一大容量ファイルと、実際に近いフォルダーをそれぞれ測定します。大容量ファイルは連続転送経路を分離し、フォルダーはメタデータ、ディレクトリの走査、作成・開始・終了処理、ファイルごとの調整を表面化させます。ファイル数の影響は多数の小ファイルが遅い理由を参照してください。
現在のジョブが対話型SFTPではなくSSH経由のrsyncなら、WANで遅いrsyncの調整ガイドを使ってください。rsyncのファイル一覧、サイズと更新時刻による変更判定、差分転送の判断は別の診断順序が必要です。
1. 未完了要求数を慎重に増やす
OpenSSH sftpは、-R num_requestsまたは-X nrequests=valueで読み書きの同時要求数を制御できます。文書上の既定値は64 要求で、値を増やすとメモリ使用量と引き換えに転送速度が上がる場合があります。
極端な値へ飛ばず、段階的にテストします。
sftp -R 64 user@example.com
sftp -R 128 user@example.com
sftp -R 256 user@example.com
すべての測定で同じファイル、経路、クライアント、サーバーを使います。速度が横ばいになる、メモリ使用量が許容範囲を超える、サーバーが不安定になる時点で増加を止めます。同時要求数を増やす効果があるのは、応答待ちが速度を制限している場合です。回線そのものの帯域は変わりません。
2. より大きな転送バッファーを試す
OpenSSHのSFTP バッファー既定値は32 KBです。-B buffer_sizeまたは-X buffer=valueで読み書き操作の最大バッファーを変更できます。バッファーを大きくすると、各要求で扱うデータ量を増やせます。同時要求数と合わせて応答待ちを減らせる場合がありますが、メモリ使用量も増えます。
sftp -B 65536 user@example.com
sftp -B 131072 user@example.com
万能のバッファー値はありません。クライアント版、サーバー上限、SSH チャネルのウィンドウ、メモリ、経路の挙動が影響します。まず要求数を既定値のままバッファーを変え、次に同時要求数を別に検証すると、結果の原因を切り分けられます。
3. 圧縮はファイル構成で判断する
OpenSSHは-CでSFTP圧縮を有効にし、SSHの圧縮設定をセッションへ渡します。OpenSSH のクライアント設定マニュアルでは圧縮は既定で無効で、SSH接続上の全通信に適用されます。
帯域が少なくCPUに余裕がある場合、ログ、ソースコード、CSV、未圧縮テキストには有効なことがあります。JPEG、MP4、ZIPなど既に圧縮済みのデータには効果が少なく、CPUだけを使う可能性があります。
sftp user@example.com
sftp -C user@example.com
送信バイト数の削減よりも速度低下やCPU増加が大きければ、圧縮を無効のままにします。
4. セッションを再利用して関連処理をまとめる
認証とセッションの確立を繰り返すと固定負荷が増えます。定期ジョブではOpenSSHの-b batchfileを使い、適切な非対話認証とともに複数のSFTP コマンドを1つのセッションで実行できます。
小ファイルが多いディレクトリでは、1 セッション内でもファイルシステムとファイルごとの処理が支配的になる場合があります。アーカイブ化すれば連続ストリームにできますが、アーカイブ作成、一時保存領域、展開、アーカイブ単位の再開が追加されます。繰り返す処理なら、ファイル境界を保ちながら自動パッキングする転送エンジンと比較してください。
5. CPU、ストレージ、サーバー制限を確認する
要求やバッファーを変えても改善しない場合、要求の並行処理以外がボトルネックです。
- **CPU:**暗号化と整合性処理は両側で行われます。総CPUだけでなくコアごとの使用率を記録します。
- **ストレージ:**小ファイル作成が受信先IOPSを使い切り、回線が空くことがあります。
- **ネットワークロス:**SSH/SFTPは通常TCP上なので、ロスと再送で送信速度が下がります。
- **速度制限:**SFTP サーバー、アカウント、ゲートウェイ、上流回線の上限を確認します。
- **追加の中継点:**踏み台サーバーは追加経路と追加システムを作り、そこが上限になる場合があります。
ベンチマークのためにホスト鍵確認を弱めたり、古い暗号を選んだり、整合性確認を無効にしたりしないでください。SFTPを選ぶ理由となったセキュリティを維持したまま調整します。
再現可能なSFTPベンチマーク
- 毎回同じ単一大容量ファイルと実フォルダーを用意する。
- クライアントとサーバーの版、ハードウェア、ストレージ、経路、RTT、ロス、現在のオプションを記録する。
- ピークの進捗表示ではなく総所要時間を測る。
- 既定設定を3回以上実行し、中央値を使う。
- 同時要求数を変更して再測定し、最良の安定値へ戻す。
- バッファーサイズを変更して再測定し、最良の安定値へ戻す。
- 実際のファイル形式で圧縮有効・無効を比べる。
- 非本番転送を中断し、再開と最終整合性を確認する。
データ転送時間の下限は1TB転送時間計算ツール、経路設計とプロトコル選定は長距離高速ファイル転送ガイドを利用してください。
SFTP調整で十分な場合と、代替を比較する場合
必要な完了時間を満たし、既存の自動化、セキュリティ、アクセス制御に適合するならSFTPを維持してください。広く利用でき、スクリプト化しやすい選択肢です。
現行版を同じファイル、経路、ストレージ、保護設定で比較してください。転送区間の速度と、受信者が検証済みファイルを使えるまでの時間を分けて記録します。WarpSend と FTP の測定方法では比較の手順を説明しています。FTP の結果は SFTP や Aspera の性能を示すものではありません。
WarpSendはSFTP サーバー要件を置き換えず、SFTPを実装する製品でもありません。対応エンドポイントを導入でき、直接転送、ブラウザー共有リンク、マネージドなフォルダー同期が必要なチーム向けの別ワークフローです。WarpDirectを確認し、SFTP の比較に使った同じファイルで無料のWarpSend転送を試してください。
よくある質問
長距離接続でSFTPが遅くなるのはなぜですか?
往復遅延、パケットロス、控えめな要求数とバッファー設定、SSH暗号化のCPU負荷、送信元または受信先のストレージが制約になります。高速なアクセス回線でもこれらの上限は消えません。同じファイル構成で、RTT、ロス、CPU、ストレージ速度、完了までの時間を記録してください。
転送速度を改善できるOpenSSH SFTP設定は?
OpenSSHでは、未完了要求数を-Rまたは-X nrequests、要求ごとのバッファーを-Bまたは-X bufferで変更できます。値を大きくすると高遅延経路の待ち時間を減らせる場合がありますが、メモリ使用量が増えます。CPU、ストレージ、ロス、サーバー側制限が原因なら改善しません。1項目ずつ変更して再測定してください。
SFTPの圧縮は有効にすべきですか?
決めつけずにテストしてください。帯域が限られた経路で圧縮しやすいテキストを送るなら有効な場合がありますが、CPUを使い、JPEG、MP4、ZIPなど既に圧縮された形式にはほとんど効果がありません。OpenSSHの既定値は圧縮無効です。
SFTPとFTPSは同じですか?
違います。SFTPは暗号化された SSH 接続上でファイル操作を行います。FTPSはTLSで保護したFTPであり、FTPの制御接続とデータ接続の構造を維持します。クライアント、ポート、認証、ファイアウォール、性能調整が異なります。