EASYBOT GUIDE
504 Gateway Timeoutとは?タイムアウトの原因と直し方
504 Gateway Timeoutが起きる仕組みと、Cloudflare・Nginx・アプリ間の接続で確認するタイムアウト対策を解説します。
504 Gateway Timeoutは、ゲートウェイやリバースプロキシが上流サーバーから時間内に応答を受け取れなかった状態です。上流アプリが遅い、外部APIが停止している、タイムアウト値が合っていない時に発生します。
502との違い
502は上流から無効な応答や接続失敗を受け取った状態、504は応答を待ったものの期限内に届かなかった状態です。どちらもプロキシと上流のログを同じ時刻で照らし合わせます。
- 発生時刻とリクエストIDを控える
- プロキシ側のupstream timeoutログを探す
- アプリ側の処理時間と外部通信時間を比較する
長い処理を調べる
データベースの遅いクエリ、同期的なファイル処理、応答しない外部APIがよくある原因です。処理を段階ごとに計測し、どこで時間を使ったかを記録します。
- DBのクエリ時間と接続プールを確認する
- 外部APIごとに短い接続・応答タイムアウトを設定する
- 大量処理をバックグラウンドジョブへ移す
タイムアウト値の整合
プロキシの上限だけを大きくしても、アプリやロードバランサーが先に接続を切れば改善しません。各層の時間制限と再試行を見直します。
- クライアント・プロキシ・アプリの上限を一覧にする
- 処理の最大時間に合わせて無理のない値を設定する
- クライアント再試行で処理が重複しないようにする
利用者側の対応
利用者は再読み込みを連打せず、時間を置いて再試行します。送信フォームがある場合は、処理が完了していないか履歴を確認してから再送してください。
- 短時間待って一度だけ再試行する
- 処理結果や通知が届いていないか確認する
- 継続する場合はURLと発生時刻を運営へ伝える