EASYBOT GUIDE
HTTP 502と504の違い|Bad GatewayとGateway Timeoutを切り分ける
502 Bad Gatewayと504 Gateway Timeoutを比較し、接続失敗と応答遅延をログから見分ける方法を紹介します。
502と504はどちらもプロキシやゲートウェイと上流サーバーの間で起きるエラーですが、502は無効な応答や接続失敗、504は応答待ちの時間切れを示します。
502が示す状態
上流へ接続できない、接続先ポートが違う、上流が不正なHTTP応答を返した時に発生します。プロキシが解決したホストと実際の待受ポートを確認します。
- アプリとコンテナが起動しているか確認する
- upstreamのホスト名とポートを確認する
- プロキシログの接続拒否や無効応答を見る
504が示す状態
上流に接続はできても、処理が時間内に終わらない状態です。遅いクエリや外部API、長時間処理を計測し、非同期化や処理量削減を検討します。
- アプリ処理と依存先の応答時間を計測する
- 外部APIへタイムアウトを設定する
- 長いタスクをキュー処理へ移す
共通する確認
要求の時刻、URL、リクエストIDを使って、Cloudflare、プロキシ、アプリの各ログを対応づけます。ログに到達していない場合は手前の層を調べます。
- 同じ時刻とリクエストIDでログを検索する
- HTTPステータスを返した層を特定する
- CPU、メモリ、ディスクの状態を確認する
対処後のテスト
設定変更後は正常系だけでなく、停止中の上流や遅延時の応答も確認します。タイムアウト延長のみで隠さず、根本の接続・処理問題を記録します。
- プロキシから上流へ直接接続を試す
- 正常なリクエストが期待ステータスを返すか見る
- 再発時に比較できる監視値を残す