何が起きたのか?
503 は「サーバーは生きているけれど、いま応える余裕がない」というサインです。 教室で言えば、先生は教室にいるのに、目の前で別の生徒の対応に追われていて「ちょっと今は手が離せない」と返している——そんな場面に近いかもしれません。
502 が「中継役は元気だが上流からの返事が壊れている」状態だとしたら、503 は「サーバー自身が、自分の判断で受付を絞っている」状態です。多くの場合は一時的で、Retry-After ヘッダがあれば、その秒数を待つのが正しい応対になります。
黒板からのひとこと
学校全体で停電や水道トラブルがあるとき、職員室は「今日は午後から再開します」と入口に貼り紙をします。締め出しているのではなく、安全と公平のために一時的に受付を止めている。それが 503 のサーバー側の心境です。
利用者にできるのは、しばらく待つ、別の手段を試す、または管理者に状況を伝えること。連打すると過負荷を悪化させるので、429 と同様、間を置く作法が効きます。
解決への歩み
大丈夫、次はこうしてみよう:
- Retry-After を確認して待つ:指定があれば素直に従う、なければ少し時間を置く
- ステータスページや告知を見る:計画メンテナンスの案内が出ていることが多い
- 別の機能や別の地域から試す:特定の機能だけ落ちているのか、全体かを切り分ける
- 負荷とヘルスチェックを点検(管理者向け):オートスケール、依存サービスの状態、サーキットブレーカ、フェイルオーバの順に確認
実際にはこう見える
$ リクエスト
curl -i https://example.com/some/path ↓ レスポンス
HTTP/1.1 503 Service Unavailable
Content-Type: text/html; charset=utf-8
<!DOCTYPE html>
<html><body><h1>503 Service Unavailable</h1></body></html>