503エラーとは?原因の切り分けと安全な復旧手順
サーバー用語解説
503エラーとは?原因の切り分けと安全な復旧手順
503 Service Unavailableは、サーバーが一時的にリクエストを処理できないときに返すHTTPステータスです。メンテナンス、過負荷、上流サービスの停止などを順に確認し、原因を残したまま再起動を繰り返さないことが安全な復旧の出発点です。

まず押さえること
503は「一時的に利用できない」という応答であり、必ずしも閲覧者の端末やネットワークの故障を意味しません。Retry-Afterが示されている場合はその値を尊重し、運用者は変更履歴・ログ・依存サービスの状態を突き合わせます。
503エラーの主な原因
アクセス集中・リソース枯渇
CPU、メモリ、ワーカー、接続数などの上限に達すると、Webサーバーやアプリケーションが新しい処理を受け付けられず503を返します。時間帯別のリクエスト数とリソース使用率を同じ時刻で確認します。
計画メンテナンス
更新や保守の間、意図的に受付を止めて503を返す構成があります。メンテナンス開始・終了時刻、告知、ロードバランサーの切り替え状態を確認してください。
上流アプリ・依存サービスの停止
リバースプロキシからアプリ、データベース、キュー、外部APIへ接続できない場合も503になります。プロキシのエラーログだけで断定せず、各依存先のヘルスチェックとタイムアウトを確認します。
デプロイ・設定変更の不整合
直前のリリース、環境変数、証明書、ルーティング、ヘルスチェック条件の変更が新しいインスタンスをunhealthyにすることがあります。変更時刻と最初の503発生時刻を照合します。
キュー・レート制限・保護機構
バックグラウンド処理の滞留や同時実行数の制限、サーキットブレーカーが過負荷を広げないために503を返す場合があります。再試行を増やす前に待ち行列と制限値を確認します。
ホスティング事業者側の障害
共有基盤やリージョンの障害で、自分の変更がなくても503が発生します。事業者の障害情報とサポート窓口を確認し、発生時刻・URL・リクエストIDを添えて問い合わせます。
安全な復旧手順
1. 影響範囲と発生時刻を固定する
別回線・別端末と監視結果で再現範囲を確認し、対象URL、HTTPメソッド、ステータス、最初に検知した時刻を記録します。単一クライアントだけなら、サーバー全体の障害と決めつけません。
2. 変更とメンテナンスを止めて確認する
デプロイ、設定変更、負荷試験をいったん凍結し、予定メンテナンスや障害情報を確認します。原因が分からないまま再起動や設定の上書きを重ねると、証拠と復旧手順を失います。
3. アクセス・エラー・上流ログを同じ時刻で見る
アクセスログ、Webサーバーのerror log、アプリログ、ロードバランサーのヘルスチェックを相関させます。upstream timeout、connection refused、worker exhaustedなどの具体的な兆候を探します。
4. リソースと依存先を確認する
CPU・メモリ・ディスク・接続数・キュー長と、DB・キャッシュ・外部APIの稼働状態を確認します。監視値に上限が見える場合は、追加の負荷をかける操作を避けます。
5. 影響を抑えた変更を一つずつ戻す
承認済みのロールバック、トラフィック分散、キャッシュ、レート制御など、可逆で記録できる手段を一つずつ実施します。復旧確認前に複数の設定を同時変更しないでください。
6. 復旧を検証し、再発防止を残す
主要URLの200系応答、エラー率、遅延、依存先の成功率を監視し、一定時間安定してから告知を更新します。原因、検知、判断、変更、再発防止策をインシデント記録に残します。
復旧確認チェックリスト
- ステータスページ、監視、別回線で同じ障害を確認した
- 変更履歴とメンテナンス予定を発生時刻に照合した
- アクセス・エラー・アプリ・上流ログを保存した
- CPU、メモリ、接続数、キュー、DBの状態を確認した
- 復旧後に主要URL、エラー率、遅延を一定時間監視した
公式資料
HTTPの意味はRFCを基準にし、実装固有の切り分けは利用中のWebサーバー公式資料で確認します。
よくある質問
503エラーは何を意味しますか?
サーバーが一時的な過負荷やメンテナンスなどでリクエストを処理できない状態です。RFC 9110では、遅延後に解消する可能性がある状態として定義されています。
502や504とはどう違いますか?
502はゲートウェイが上流から不正な応答を受けた状態、504は上流の応答待ちが期限切れになった状態です。実際の分類は構成とログで確認し、番号だけで原因を断定しません。
閲覧者ができることはありますか?
Retry-Afterがあれば待ち、その後に一度だけ再試行します。繰り返し更新したり、決済や送信を重複実行したりせず、運営者の障害情報を確認してください。
サーバーを再起動すれば直りますか?
原因が分からない状態での再起動は、ログや接続状態を失うことがあります。変更履歴とログを保存し、承認された復旧手順として実施できる場合だけ行います。
Retry-Afterは必ず設定すべきですか?
復旧見込みを示せる場合に、サーバーやプロキシの仕様に沿って設定します。値がある場合、クライアントや自動再試行はその指示を尊重します。
いつホスティング会社へ連絡しますか?
自分の変更がなく、複数のURLや回線で継続する場合は、発生時刻、対象URL、ステータス、リクエストID、ログの要約を添えて早めに相談します。
運用状況を一緒に整理する
監視、ログ、依存サービス、復旧手順を現在の構成に合わせて整理したい場合は、状況を伺って実行可能な切り分け表に落とし込みます。
運用状況を相談する障害対応の実施や復旧を保証するものではありません。