まず結論:504が出たときに起きていること
- 上流サーバー(アプリ/DB/API)が遅い、または固まっている
- 中継(Cloudflare/Nginx/ロードバランサ)が待機時間上限に達した
- 結果として、ユーザーには「時間切れ」でエラーが返る
504 Gateway Timeoutの主な原因(サイト側)
- DB遅延:ロック、スロークエリ、接続数逼迫
- アプリ遅延:重い処理(集計・変換・外部API待ち)を同期で実行している
- 外部API障害・遅延:決済、認証、地図などの外部サービス応答が遅い
- サーバーリソース不足:CPU/メモリ不足で処理が進まない
- ネットワーク/上流障害:上流ホストへの到達性が不安定(瞬断・パケットロス)
- CDN/WAF/ロードバランサ設定:タイムアウト値が短すぎる、上流との相性問題
ユーザー側でできる対処(優先順)
- 1) 時間を置いて再試行(負荷が落ちると通ることがある)
- 2) 別回線で試す(ISP/地域差の切り分け)
- 3) ページを軽くする:別ページに移動→戻る、画像/動画が多いページなら少し時間を空ける
- 4) 公式ステータスやSNSで障害情報を確認
運営者側の改善ポイント(サイト管理者向け)
- 最優先:何が遅いかを特定(APM/ログで“遅いエンドポイント”を把握)
- DB:スロークエリ、インデックス、ロック、接続プールを確認(504の大半がここ絡み)
- 外部API依存:タイムアウト設計・リトライ設計を見直し、可能なら非同期化(キュー/バックグラウンド処理)
- キャッシュ導入:ページキャッシュ/データキャッシュ(“同じ重い処理”の繰り返しを避ける)
- リソース増強:CPU/メモリ、ワーカー数、DBのスケール(短期回避として有効)
- タイムアウト設定見直し:中継(CDN/LB/Proxy)と上流(アプリ/DB)の整合を取る(延ばすだけでは根本解決にならない)
このエラーが「サイト全体」か「自分だけ」か確認する
504はサイト側要因が多いですが、経路や回線差で発生することもあります。外部地点からの疎通確認で切り分けしましょう。
よくある質問
- Q. 504と502の違いは? → 504は「上流の応答が遅すぎて時間切れ」、502は「中継役が上流から正しい応答を受け取れない(不正/空/遮断など)」が主な違いです。
- Q. リロード連打は有効ですか? → 混雑や遅延時は逆効果になりやすいです。時間を置いて再試行し、可能なら別回線で切り分けるのが安全です。
- Q. 特定のページだけ504になります。なぜ? → そのURLだけ重い処理(集計/検索/外部API待ち)が走っている可能性が高いです。運営者ならAPM/ログで該当エンドポイントを確認します。
- Q. どれくらい待てば直りますか? → 一時的な過負荷なら数分〜数十分で戻ることがあります。長時間続く場合は運営側のボトルネック/障害の可能性が高いです。