ファイル転送タイムアウトエラー:原因と解決策ガイド
ファイル転送中にタイムアウトエラー?原因の理解と接続タイムアウト・サーバーエラーの実証済み修正方法を解説。
ファイル転送中のタイムアウトエラーは、4つのうちの1つから来ます。クライアントのHTTPリクエストがサーバーの応答を長く待ちすぎた(通常30〜120秒)、サーバーがクライアントのデータ送信を長く待ちすぎた(遅いアップロードで一般的)、中間プロキシまたはロードバランサーが接続を切断した(AWS ALBのデフォルトは60秒)、またはOSがアイドルTCP接続を終了した。504 Gateway Timeoutは、ロードバランサーがオリジンに到達できなかったことを意味します。408 Request Timeoutは、サーバーがデータを待つのをあきらめたことを意味します。ERR_CONNECTION_TIMED_OUT は、TCPハンドシェイクが完了しなかったことを意味します。それぞれに明確な修正があります。
エラーからタイムアウトの種類を読む
異なるタイムアウトには異なる修正が必要です:
- 504 Gateway Timeout:中間プロキシまたはロードバランサーがタイムアウト。サービス側の問題、通常は一時的。再試行するかリージョンを切り替えます。
- 408 Request Timeout:サーバーがクライアントデータを待つのをあきらめた。アップロードがリクエスト途中でストールしました。
- 524 (Cloudflare):オリジンが100秒以内に応答しなかった。サービス側。
- 502 Bad Gateway:プロキシがオリジンから無効な応答を受け取った。サービス障害または進行中のデプロイ。
ERR_CONNECTION_TIMED_OUT:サーバーへのTCP接続が完了しなかった。ネットワークまたはファイアウォール。ERR_NETWORK_CHANGED:ネットワークが接続途中で切り替わった。Wi-Fiローミングまたは VPN切断。
DevToolsのネットワークタブには正確な応答、タイミング、ステータスコードが表示されます。何かを閉じる前にスクリーンショットを撮ってください。
Wi-Fiローミングは長時間のアップロードを終了させる
ノートパソコンのWi-Fiチップは、帯域とアクセスポイントを自動的に切り替えます。各切り替えは現在のTCP接続をドロップします。シングルストリームアップロードは即座に死に、チャンクアップロードはサービスがチャンクごとに再試行する場合に生き残ります。
修正:2GBを超えるアップロードではイーサネットでハードワイヤー。それができない場合は、ルーターで帯域ステアリングを無効にし(ノートパソコンのSSIDを「5GHzのみ」に切り替え)、1つの部屋に留まります。macOSでは、アップロード途中でより強い信号を探すのを防ぐために、プライマリSSID以外のすべてで「自動接続」をオフにします。
サービス側のロードバランサータイムアウト
AWS Application Load Balancerはアイドルタイムアウトをデフォルトで60秒にします。Nginxは proxy_read_timeout をデフォルトで60秒にします。これらを適切にチューニングしていないサービスは、60秒マークで短時間一時停止するアップロード(暗号化のため、ソースでの遅いディスク読み取りのため)を切断します。
特定のサービスで504タイムアウトが表示される場合、通常は彼らのロードバランサーの設定ミスです。再試行以外、クライアント側でできることはありません。チャンクアップローダーは失敗したチャンクを再試行することで透過的にこれを処理します。シングルストリームアップローダーは完全に失敗し、最初からやり直します。
企業プロキシのタイムアウト
Zscaler、Blue Coat、Palo Alto、他の企業プロキシは独自のタイムアウトを強制し、通常はアイドル30秒から5分です。アップロードがプロキシからアイドルと認識される何か(暗号化の一時停止、チャンク再試行の遅延)をしている場合、プロキシは接続を終了します。
企業ネットワーク外(携帯のホットスポット)からアップロードして診断します。タイムアウトが消えれば、プロキシが原因です。ITに転送サービスのドメインを許可リストに追加し、それらのドメインの検査をバイパスするよう依頼します。代替手段は個人ネットワークまたは自宅へのVPNトンネルです。
OSレベルのTCPキープアライブ
Linuxはデフォルトで2時間のアイドル後にのみTCPキープアライブパケットを送信し、ファイル転送には役に立ちません。macOSとWindowsには同様のデフォルトがあります。不安定なネットワーク上での非常に長いアップロードの場合、一部のサービスはWebSocketのpingフレームまたは定期的な空のチャンクを介してアプリケーションレベルのキープアライブを実装します。サービスがそうしない場合、NATファイアウォール(ほとんどの家庭用ルーターでデフォルト5分のUDPセッションタイムアウト)を通る長いアップロードは、NATエントリが期限切れになると壊れる可能性があります。
VPNセッショントークンの更新
一部のVPNクライアントは5〜15分ごとにセッショントークンを更新します。バグのあるクライアントでは、更新が基盤となるTCPトンネルを0.5秒間ドロップします。長いアップロードはそこで死にます。
有料VPN(Mullvad、ProtonVPN Plus、IVPN)はこれをクリーンに処理します。無料VPNはしばしばそうしません。10分マークで一貫してタイムアウトが発生する場合、VPNの更新を疑います。転送サービスがすでにTLS 1.3エンドツーエンド暗号化を使用している場合、アップロードのためにVPNを切断します。
セルラーのハンドオフ
セルラーデータは移動するにつれてセルを切り替えます。各ハンドオフは、(a) モビリティ管理を介してIPを維持(透過的)または (b) 新しいIPを割り当て(接続がドロップ)のいずれかです。LTEでは、ほとんどのハンドオフは透過的です。5G、特にmmWaveでは、sub-6またはLTEフォールバックへのハンドオフがIPを変更し、接続を終了させる可能性があります。
セルラーで動く車両からアップロードしている場合、ドロップを予想してください。チャンク再開可能なアップローダーはこれをよく処理します。シングルストリームアップローダーはしません。
Mod_securityとWAFのタイムアウト
サービスがWebアプリケーションファイアウォール(Cloudflare WAF、AWS WAF、ModSecurity)の背後にある場合、WAFは長時間のアップロードを疑わしいとフラグ付けして切断する可能性があります。症状:小さいサイズではアップロードが成功し、特定のしきい値(WAFの設定によって1GBまたは10GBが多い)で失敗し、403または502応答が発生します。
クライアント側で修正できることは何もありません。サービスに報告してください。よくチューニングされたWAFはフラグなしでチャンクアップロードを許可します。
ブラウザのデフォルトタイムアウト
ブラウザにもリクエストタイムアウトがありますが、通常はアップロードには寛大です。ChromeとFirefoxはデフォルトでXHRおよびfetchリクエストに無制限の時間を与えますが、一部の構成では5分後にアイドル接続を終了します。Service Workerはインターセプトしてタイムアウトを延長できます。
サービス自身のJavaScriptがチャンクごとに xhr.timeout = 30000(30秒)を設定する場合、遅いチャンクは失敗します。これはサービス側のバグです。報告してください。
HTTPSトラフィックを検査するウイルス対策
「HTTPS検査」が有効なWindows Defender、Norton、Bitdefender、および類似のものはすべて、コンテンツをスキャンするためにHTTPS接続をMITMします。大容量アップロードでは、スキャン自体がチャンクをサーバー側のタイムアウトを超えるレイテンシを追加する可能性があります。
大容量アップロード中は一時的にHTTPS検査を無効にします(完全なAVではなく、HTTPSスキャンのみ)。アップロードが成功すれば、転送サービスを恒久的にAVの除外リストに追加します。
再試行ロジックと指数バックオフ
よく作られた転送クライアントは、指数バックオフで失敗したチャンクを再試行します:1秒、次に2秒、次に4秒、次に8秒。短いネットワーク不具合は透過的に修復されます。再試行ロジックのないクライアントは最初のエラーで失敗します。
自動的に再試行しないサービスを使用している場合、より多くのタイムアウトによる失敗が見られます。再試行を処理するクライアントまたはサービスを選択してください。
15分後にもう一度試すだけ
一部のタイムアウトは一時的です:Cloudflareエッジの不具合、サービスのデプロイ、輻輳したトランジットリンク。エスカレートする前に15分後に再試行します。再び失敗する場合、問題があなたか彼らかを切り分けるために別のネットワークに切り替えます。
堅牢な再試行を持つサービスを選ぶ
信頼できないネットワーク上での大容量ファイルには、チャンクごとの再試行、再開可能なセッション状態、攻撃的なサーバー側タイムアウトのないサービスが必要です。HexaTransferはチャンクごとの再試行とクライアント側のAES-256-GCM暗号化で並列チャンクアップロードを実行するため、不安定な接続上での10GBアップロードは、単一のネットワーク不具合で転送全体が失敗するのではなく、影響を受けたチャンクを透過的に再試行します。
hexatransfer.comでお試しください — 無料、登録不要、最大10GB。
エンドツーエンド暗号化で大容量ファイルを安全に送信
エンドツーエンド暗号化で最大10GBのファイルを無料で転送。アカウント不要。ファイルはアップロード前にブラウザで暗号化されるため、他の誰にも読まれません。
ファイルを送信