503エラーとは?原因の切り分けと復旧・再発防止をサーバー実装目線で解説【2026年版】
503エラー(HTTP 503 Service Unavailable)は、サーバーが一時的にリクエストを処理できない状態を返すステータスコードです。この記事では、503がどの層のサーバーから返るのか、アクセス集中・メンテナンス・上流障害という原因の3系統をどう切り分けるのか、502や504と何が違うのかを実装目線で整理します。閲覧者としてできる確認と、運用者としてのログ調査・復旧時間の見積もり、さらにオートスケールや冗長化、レートリミットで再発を止める構成の判断まで、「自分のサービスで503を出さないために何をすべきか」に条件付きで答えます。
目次
まとめ|503エラーの原因系統と再発を止める判断基準
503エラーは、サーバーが「今この瞬間は処理できない」とクライアントへ返す一時的な応答です。ページが存在しない404や、権限がない403とは性質が異なり、リクエストの内容ではなくサーバー側の受け入れ余力が尽きている状態を指します。原因は大きく4系統に分かれます。アクセス集中によるワーカー枯渇、計画メンテナンスによる意図的な停止、背後のアプリケーションサーバーやデータベースの障害、そして設定ミスです。
切り分けは「誰に出ているか」と「どの層から返っているか」の2軸で進めるのが基本です。自分だけなのか全員なのか、Webサーバーが返したのか、その先のロードバランサーやアプリケーションサーバーが返したのかを、ログとヘッダーで特定します。閲覧者側の対処は時間をおいてのリロードにほぼ限られますが、運用者側は根本原因の層を突き止め、恒久対策まで踏み込めます。恒久対策の中心は、負荷に応じて台数を増やすオートスケール、1台の障害を吸収する冗長化、過負荷時に一部を意図的に絞るレートリミットの3つです。ただし全部を入れる必要はありません。「止まると何円失うか」を先に見積もり、その額が構成の複雑さと運用コストを上回るときだけ投資する——これが本記事の結論です。
503は、HTTPステータスコードの5xx系(サーバーエラー)に属します。クライアントの要求は正しく届いているのに、サーバー側が応答を用意できないときに返る番号です。まずこの「一時的なサーバー都合」という性質を押さえると、後の切り分けが速くなります。
503は「Service Unavailable(サービス利用不可)」を表し、サーバーが過負荷またはメンテナンスで、一時的にリクエストを処理できない状態を示します。同じ5xx系でも、500(Internal Server Error)はプログラムの実行時エラーという「原因不明の内部異常」、502(Bad Gateway)と504(Gateway Timeout)はプロキシやロードバランサーが背後のサーバーとの通信でつまずいた状態を指します。503が他と違うのは、サーバー自身が「今は受けられない」と自覚して意図的に返す点です。だからこそ後述のRetry-Afterで「いつなら受けられるか」を伝えられます。エラーコードごとの意味を横断的に確認したいときは、主要なHTTPステータスコードの一覧と説明で4xx・5xxの全体像を先に押さえると、503がどの位置にある番号かがつかめます。
Retry-Afterヘッダーが示す「一時的」の意味とクライアントの挙動
503応答には、サーバーがRetry-Afterというレスポンスヘッダーを付けられます。これは「◯秒後、または◯月◯日◯時以降に再試行してほしい」という指示で、値は秒数かHTTP日付形式です。検索エンジンのクローラーはこのヘッダーを読み、指定時間まで再クロールを控えます。つまりメンテナンス時に適切なRetry-Afterを付けた503を返せば、Googleに「サイトが消えた」と誤認されず、インデックス維持につながるのが利点です。逆に、恒久的にページを閉じるのに503を返し続けると、クローラーはいつまでも「一時的」と解釈し、再訪を繰り返します。永久に消すなら404か410を返すのが正しく、503は「必ず戻ってくる」場合にだけ使う番号です。
サーバーダウン・502・504エラーとの違いと503切り分けの起点
「503とサーバーダウンは同じ?」という疑問は切り分けの入口でつまずく典型です。サーバーが完全に停止していれば、そもそもHTTP応答自体が返らず、ブラウザは接続タイムアウトや「接続できません」を表示します。503が返っているということは、少なくとも応答を返す層は生きているという意味です。ここが復旧の見込みを判断する起点になります。
| 状態 | 返るもの | 主な発生箇所 | 示す状況 |
|---|---|---|---|
| 503 | HTTP 503応答 | Web/APサーバー | 過負荷・メンテで一時的に受けられない |
| 502 | HTTP 502応答 | プロキシ・LB | 背後サーバーから不正な応答が返った |
| 504 | HTTP 504応答 | プロキシ・LB | 背後サーバーが時間内に応答しない |
| サーバーダウン | 応答なし・接続不可 | サーバー全体 | プロセスやマシンごと停止 |
502と504は、手前のロードバランサーやリバースプロキシが背後との通信で問題を検知したときに返します。503は自サーバーが自分の都合で返すため、502/504が出ているなら「経路の先のサーバー」を、503なら「今応答しているサーバー自身」を疑う、という順で当たりを付けます。
503エラーが発生する主な原因|アクセス集中・メンテナンス・上流障害
503の原因は多岐にわたるように見えて、実装上は「処理能力の限界」「意図的な停止」「経路の先の障害」の3系統に収れんします。プロキシ経由の環境で出る「503エラー 原因 プロキシ」のようなケースも、この3つ目に含まれる過負荷の一種です。順に、どのサーバー設定が引き金になるかまで踏み込みます。
アクセス集中によるワーカー枯渇とWebサーバーの同時接続上限
最も多い原因が、瞬間的なアクセス集中でサーバーの処理枠を使い切るパターンです。Webサーバーは、同時に処理できるリクエスト数に上限を持ちます。Apache(2.4系)ならMaxRequestWorkers、Nginx(1.27系)ならworker_connectionsやワーカープロセス数がその枠にあたる設定値です。この枠がすべて埋まると、次のリクエストは行き場を失い、503が返ります。テレビ放送やセール開始、チケット販売の直後に「ローチケ 503エラー」のような形で集中するのが典型例です。PHP-FPMを使う構成では、pm.max_childrenの上限に達したときにも同様に処理待ちがあふれます。ここで効くのは、1リクエストあたりのメモリ消費を見て枠の値を適正化することと、そもそも到達する処理量を後述のキャッシュやスケールアウトで減らすことです。枠を無闇に上げると、今度はメモリを食い潰してサーバーごと落ちるため、上限値はメモリ量から逆算します。
意図的な503を返すメンテナンスモードと.maintenanceファイル
503は障害だけでなく、運用者が意図的に返す場面もあります。デプロイやDB移行の最中に、中途半端な状態のページを見せないよう、サーバーを一時的に503へ切り替える運用です。WordPressは更新中に自動で.maintenanceファイルを生成し、この間サイト全体が503を返します。更新が異常終了するとこのファイルが残り、サイトが503のまま張り付いた状態です。その場合はFTPやSSHでルート直下の.maintenanceを削除すれば復旧します。自前でメンテナンス画面を出すなら、Webサーバーの設定で対象を503にマッピングし、前述のRetry-Afterを添えるのが作法です。ユーザーには「メンテナンス中・再開予定時刻」を、クローラーにはRetry-Afterを、同じ503応答で同時に伝えられます。
上流のアプリケーションサーバー・DB障害とロードバランサーのヘルスチェック
Webサーバーの先にあるアプリケーションサーバーやデータベースが応答しないときも、手前の層が503を返すことがあります。ロードバランサーは、背後の各サーバーへ定期的に生存確認(ヘルスチェック)を送り、応答しないサーバーを振り分け先から外す仕組みです。ところが背後のサーバーが全台ヘルスチェックに失敗すると、振り分け先が1台も残らず、ロードバランサーは503を返すしかなくなります。データベースの接続数上限に達してアプリが処理を返せない、デプロイでアプリの再起動が全台同時に走った、といった状況がこれを引き起こします。プロキシ構成で「503 原因 プロキシ」として現れるのも多くはこのパターンです。設計上は、背後を全台同時に落とさない(ローリング更新にする)ことと、ヘルスチェックの間隔・しきい値を適正化することが要になります。ロードバランサーの振り分けとヘルスチェックの仕組みはロードバランサーの仕組みと振り分け方式の解説で詳しく整理しており、503の切り離し挙動もこの延長線上にあります。
503エラーの切り分けと対処|閲覧者側と運用者側でやることが違う
503への対処は、立場で大きく変わる点に注意が必要です。閲覧者にできるのは待つことがほぼすべてですが、運用者はログとリソースから原因の層を突き止め、恒久対策まで進めます。まず「自分だけか全体か」を判定し、次にサーバー側の調査へ移る順序で解説します。
閲覧者としてできる確認と「503エラーは自分だけか」の切り分け
閲覧者側の視点では、まず自分だけに出ているのか、全員に出ているのかを切り分けます。スマートフォンのモバイル回線に切り替える、別のブラウザやシークレットウィンドウで開く、DownDetectorのような稼働状況サイトで同じサービスの報告を見る、という3手が判定の基本です。自分だけなら、ブラウザやプロキシのキャッシュ、社内ネットワークの制限が絡む可能性があり、キャッシュ削除や回線変更で解消することがあります。全員に出ているならサーバー側の問題で、閲覧者にできるのは時間をおいての再読み込みだけです。連打でのリロードは、集中しているサーバーへさらに負荷を足すため逆効果になります。数分から十数分あけて再訪するのが、閲覧者側にできる最善の行動です。
運用者がアクセスログとサーバーリソースからボトルネックを特定する手順
運用者は、推測ではなくログとリソースの実測から原因の層を特定します。Linuxサーバーであれば、次の順で当たると外しません。
- Webサーバーのエラーログ(Apacheのerror_log、Nginxのerror.log)で503の直前に何が記録されたかを見る
- アクセスログでリクエスト数の急増や特定IP・特定URLへの集中がないかを確認する
- topやvmstat、freeでCPU・メモリ・ロードアベレージを見て、リソース枯渇かを判定する
- アプリケーションサーバーやDBのログで、接続数上限やタイムアウトが出ていないかをたどる
この4段で、アクセス集中なのか、上流障害なのか、設定値の頭打ちなのかが切り分けられます。プロセスやリソースの確認コマンドの前提となるLinuxの基本はLinuxの仕組みとサーバー用途の解説にまとめており、どのログがどこに出るかもこの構造から追える内容です。原因の層が決まって初めて、枠を広げるのか、台数を増やすのか、上流を直すのかという対処が選べます。
503エラーの復旧時間の見積もりと自然復旧しないケースの見分け方
「503は いつまで 続くのか」「復旧 時間はどれくらいか」は、原因系統ごとに答えが変わります。アクセス集中が原因なら、アクセスが引けば自然に復旧し、数分から数十分で戻るのが一般的です。この場合、運用者が何もしなくても収まります。一方、メンテナンス由来なら告知された終了時刻まで、上流障害や設定ミス由来なら、原因を直すまで自然復旧しません。後者を「待てば直る」と誤認すると、いつまでも復旧しないまま時間を失います。見分け方は、リソースが枯渇から回復しつつあるか、ログにエラーが出続けているかです。ロードアベレージが下がりアクセスログの流量が落ちているなら集中型で自然復旧を待てますが、エラーログに同じ例外が出続けているなら人手での修正が必要な型だと判断します。
503エラーを再発させないサーバー構成の判断|対策の採否を見極める
ここは一般的な解説が「サーバープランを上げましょう」で終わりがちな部分に、採否の基準まで踏み込む章です。恒久対策の候補はオートスケール・冗長化・CDN・レートリミットと複数ありますが、すべてを入れるのは過剰投資です。要件から必要なものだけを選ぶ判断軸を示します。
スケールアウトとオートスケールを導入すべき条件と過剰投資の線引き
アクセス集中型の503を根本から断つ王道は、サーバーを増やして処理能力を横に広げるスケールアウトです。クラウド環境なら、負荷に応じて台数を自動で増減するオートスケールで、集中時間帯だけ台数を増やせます。ただし導入すべきかは、負荷の波の形しだいです。キャンペーンやセールで数倍に跳ねる時間帯が定期的にあるサービスは、オートスケールの効果が費用を上回ります。逆に、負荷が年間を通じてほぼ一定の社内システムや、集中がまれな情報サイトにオートスケールを組むのは過剰です。常時ほぼ同じ台数しか動かないなら、自動化の設定・検証コストが無駄になります。この場合は固定台数で少し余裕を持たせるほうが、運用も費用も軽く済む構成です。判断の軸は「ピークとボトムの倍率」で、この差が大きいほどオートスケールの投資合理性が高まります。
冗長化・ロードバランサー・CDNで恒久対策する構成と見送る場面
上流障害型やメンテナンス由来の503を減らすには、1台の停止でサービス全体を止めない冗長化が効きます。複数台をロードバランサーで束ね、1台をメンテしても残りで受け続ける構成にすれば、無停止でのデプロイに近づく設計です。静的コンテンツや画像はCDNに逃がし、オリジンサーバーへ届く前にキャッシュで返せば、そもそも到達する負荷が減って503の芽を摘めます。一方、これらを全部入れる必要はありません。短時間の停止が業務上許容でき、アクセスも少ない社内向けサイトなら、冗長化もCDNも過剰投資です。1台構成のまま監視とバックアップを固めるほうが費用対効果は高くなります。恒久対策は、可用性かスケールが業務要件になったときにだけ入れる——この線引きを外すと、機器と運用の複雑さだけが増える結果になりがちです。自社に基盤設計の知見が薄い、あるいは既存システムのクラウド移行に合わせて冗長構成を組みたい場合は、要件定義から設計・実装を一貫して支援できる開発会社に相談すると、構成のやり直しを避けられます。一創では負荷分散・冗長化を含むWebシステム開発として、トラフィック要件に応じた構成設計から運用まで対応しています。
レートリミットとgraceful degradationで意図的に503を制御する設計
集中時にサーバーを守る最後の手段が、あえて一部のリクエストを絞るレートリミットです。処理能力を超えた分を受け付けず、待たせるより明確に断ることで、全体の共倒れを防ぎます。ここで返すコードの選択が実装の勘所です。クライアント単位の過剰なリクエストを抑えるなら「429 Too Many Requests」、サーバー全体の容量超過を伝えるなら503が適切で、両者は意味が違います。429は「あなたが多すぎる」、503は「サーバーが今いっぱい」です。さらに、重要な決済処理は通し、重い集計や推薦機能は一時停止するといった、機能ごとに優先度を付けて段階的に縮退させる設計(graceful degradation)を組めば、全面503を避けられます。全部落とすか全部通すかの二択ではなく、守るべき処理を通しながら過負荷を逃がす——この制御ができると、503は「事故」から「設計の一部」に変わります。
503エラーでよくある質問|復旧時間・502や504との違い・原因
503エラーに直面した閲覧者や、サーバーを運用する担当者から寄せられやすい質問に答えます。
503エラーとは何ですか?いつ復旧しますか?
503エラーは、サーバーが過負荷やメンテナンスで一時的にリクエストを処理できない状態を示すHTTPステータスコードです。復旧時間は原因によって変わります。アクセス集中が原因なら、混雑が引く数分から数十分で自然に戻ることが多いです。メンテナンス由来なら告知された終了時刻まで、設定ミスや上流サーバーの障害が原因なら、その問題を直すまで自然には復旧しません。閲覧者側は時間をおいて再読み込みするのが基本の対処です。
503エラーは自分だけに出ているのか、全員に出ているのか確認できますか?
確認できます。スマートフォンのモバイル回線に切り替える、別のブラウザやシークレットウィンドウで開く、稼働状況を報告するサイトで同じサービスの障害報告を見る、の3つが基本の判定手順です。自分だけなら、ブラウザやプロキシのキャッシュ、社内ネットワークの制限が原因のことがあり、キャッシュ削除や回線変更で直る場合があります。全員に出ているならサーバー側の問題で、閲覧者にできるのは時間をおいての再訪だけです。
503エラーと502・504エラーは何が違いますか?
503は、応答しているサーバー自身が過負荷やメンテで「今は受けられない」と自ら返すコードです。502(Bad Gateway)と504(Gateway Timeout)は、手前のプロキシやロードバランサーが、背後のサーバーとの通信で問題を検知したときに返します。502は背後から不正な応答が返った状態、504は背後が時間内に応答しなかった状態です。503なら応答中のサーバー自身を、502や504なら経路の先のサーバーを疑うのが切り分けの順序です。
503エラーが出たとき、すぐにできる対処はありますか?
閲覧者側は、数分あけての再読み込みが基本です。連打でのリロードは混雑したサーバーへ負荷を足すため逆効果になります。運用者側は、Webサーバーのエラーログとアクセスログを確認し、アクセス集中か上流障害かを切り分ける手順です。WordPressで更新後に503が続く場合は、ルート直下に残った.maintenanceファイルを削除すると復旧することがあります。原因の層を特定してから、枠の調整・台数増強・上流の修正を選びます。
サーバー側で503エラーを根本的に防ぐにはどうすればよいですか?
負荷の波の形と可用性要件から対策を選びます。集中時間帯が定期的にあるならオートスケールで台数を自動調整し、1台の停止も許されないなら複数台をロードバランサーで束ねる冗長化が有効です。静的コンテンツはCDNへ逃がして到達負荷を減らし、過負荷時はレートリミットで一部を絞って共倒れを防ぎます。ただし全部を入れるのは過剰投資になり得ます。「止まったときの損失額」が構成の複雑さと運用コストを上回るときにだけ、必要な対策を選んで導入するのが現実的です。
関連記事
- ロードバランサーとは?仕組み・種類・振り分け方式を実装目線で解説【2026年版】:503の切り離し挙動の前提となる、ヘルスチェックと振り分け方式を扱います。
- Linuxとは?仕組み・ディストリビューション・サーバー用途を実装目線で解説【2026年版】:ログ確認やリソース調査の土台となる、サーバーOSの基本が分かります。
- HTTPステータスコードの一覧:主要なコードとその説明:503を含む4xx・5xx系ステータス全体の位置づけを確認できます。