Slate Errors

Server Error

503

Service Unavailable

— 一時的に利用できません

まずは確認: よくある原因 TOP3

  1. アクセス集中による過負荷
    スパイク時に CPU やコネクションが上限に達している
  2. 計画的メンテナンス
    デプロイや DB 切替で意図的に止めているケース
  3. 上流依存の障害でヘルスチェックが落ちている
    DB や外部 API がダウンし、サーバーが自衛で 503 を返す

何が起きたのか?

503 は「サーバーは生きているけれど、いま応える余裕がない」というサインです。 教室で言えば、先生は教室にいるのに、目の前で別の生徒の対応に追われていて「ちょっと今は手が離せない」と返している——そんな場面に近いかもしれません。

502 が「中継役は元気だが上流からの返事が壊れている」状態だとしたら、503 は「サーバー自身が、自分の判断で受付を絞っている」状態です。多くの場合は一時的で、Retry-After ヘッダがあれば、その秒数を待つのが正しい応対になります。

黒板からのひとこと

学校全体で停電や水道トラブルがあるとき、職員室は「今日は午後から再開します」と入口に貼り紙をします。締め出しているのではなく、安全と公平のために一時的に受付を止めている。それが 503 のサーバー側の心境です。

利用者にできるのは、しばらく待つ、別の手段を試す、または管理者に状況を伝えること。連打すると過負荷を悪化させるので、429 と同様、間を置く作法が効きます。

解決への歩み

大丈夫、次はこうしてみよう:

  1. Retry-After を確認して待つ:指定があれば素直に従う、なければ少し時間を置く
  2. ステータスページや告知を見る:計画メンテナンスの案内が出ていることが多い
  3. 別の機能や別の地域から試す:特定の機能だけ落ちているのか、全体かを切り分ける
  4. 負荷とヘルスチェックを点検(管理者向け):オートスケール、依存サービスの状態、サーキットブレーカ、フェイルオーバの順に確認

実際にはこう見える

$ リクエスト

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>

似ているケース

もっと知りたい