[510] [DFN[[CODE(HTTP)[[[503]]]]]] ([DFN[[[Service Unavailable]]]])
は、過負荷により一時的に[[鯖]]が[[要求]]を処理できないことを示す[[状態符号]]です。

* 仕様書

[REFS[
- [505] '''[CITE@en[RFC 7231 - Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content]] ([TIME[2014-08-07 05:54:02 +09:00]] 版) <https://tools.ietf.org/html/rfc7231#section-6.6.4>'''
- [1] [CITE@en[RFC 7168 - The Hyper Text Coffee Pot Control Protocol for Tea Efflux Appliances (HTCPCP-TEA)]] ([TIME[2014-10-12 17:41:43 +09:00]] 版) <http://tools.ietf.org/html/rfc7168#section-2.3.3>
]REFS]

* 意味

[507] [CODE(HTTP)[[[503]]]] は[[鯖]]が現在一時的な過負荷や予定されたメンテナンスにより現在は[[要求]]を処理できない
(もののいずれは解消されるであろう) ことを示します [SRC[>>505]]。

;; [509] なお、[[鯖]]は過負荷時に [CODE(HTTP)[[[503]]]] を返す必要はなく、
直ちに[[接続]]を閉じても構いません [SRC[>>505]]。

[511] [[鯖]]が[[逆串]] ([[関門]]) として動作している場合、
その接続先の[[アプリケーションサーバー]]や中間の[[ネットワーク]]の不調などで[[上流]]に[[接続]]して正しく処理できない場合に、
[CODE(HTTP)[[[503]]]] が返されることがよくあります。

;; [512] [CODE(HTTP)[[[502]]]] は[[上流]]から[[応答]]が得られたものの[[非妥当]]な場合、
[CODE(HTTP)[[[504]]]] は[[上流]]に[[接続]]はできているものの[[応答]]が時間内に得られない場合と、
少しずつ用途が違います。

* 構文

[508] [[鯖]]は、 [[要求]]を再試行するまで[[クライアント]]が待つべき時間を提案する
[CODE(HTTP)@en[[[Retry-After:]]]] [[ヘッダー]]を送っても[['''構いません''']] [SRC[>>505]]。

* 文脈

[2] [[HTCPCP-TEA]] [[鯖]]は[[珈琲]]を提供できないときに
[CODE(HTTP)[[[503]]]] [[応答]]を返すことができます [SRC[>>1]]。

[9] 稀に[[サーバー]]側で設定した利用頻度制限に抵触するとき使われることがありますが、
[CODE[[[429]]]] がより適切と考えられます。

* 歴史

[FIG(quote)[
[FIGCAPTION[
[506] RFC 1945 (HTTP/1.0); RFC 2068・RFC 2616 (HTTP/1.1) 10.5.4 503 Service Unavailable
]FIGCAPTION]

> The server is currently unable to handle the request due to a
temporary overloading or maintenance of the server. The implication
is that this is a temporary condition which will be alleviated after some delay.

サーバーは、一時的な過負担又はサーバーの維持のために、
要求を処理することが現在できません。
これは一時的な状況であって、時間を置けば緩和されるものと暗示しています。

[INS[

> [INS[{2068,2616}]] If known, the length of the delay [DEL[may]] [INS[MAY]] be indicated in a
Retry-After header.  If no Retry-After is given, the client SHOULD
handle the response as it would for a 500 response.

もし分かっていれば、遅延の長さを [CODE(HTTP)[[[Retry-After]]]]
頭で示しても'''構いません'''。 [CODE(HTTP)[Retry-After]]
が示されていない時は、クライアントは [CODE(HTTP)[[[500]]]]
応答である場合と同じように応答を扱う'''べきです'''。
]INS]

> Note: The existence of the 503 status code does not imply that a
server must use it when becoming overloaded. Some servers may wish
to simply refuse the connection.

注意 : [CODE(HTTP)[503]] 状態符号の存在は、
サーバーが過負担になったときにこれを使用しなければならないことをほのめかすものではありません。
サーバーによっては単に接続を拒否しようとするかもしれません。
]FIG]

[REFS[
- [504] [CITE@en[RFC 7252 - The Constrained Application Protocol (CoAP)]]
( ([TIME[2014-06-27 00:59:37 +09:00]] 版))
<http://tools.ietf.org/html/rfc7252#section-5.9.3.4>
]REFS]

* 実装

[514] [[Googlebot]] はメンテナンスによってページが削除されることがないよう、
[CODE(HTTP)[[[503]]]] の利用を薦めています [SRC[>>513]]。

[REFS[
- [513] [CITE@en[Official Google Webmaster Central Blog: How to deal with planned site downtime]]
( ([TIME[2014-08-27 09:16:37 +09:00]] 版))
<http://googlewebmastercentral.blogspot.jp/2011/01/how-to-deal-with-planned-site-downtime.html>
]REFS]

* メモ

[8] [[Yahoo!]] のような人気[[ポータルサイト]]、
人気の[[テレビ番組]]、
視聴者数の多い[[ニコ生]]番組などで [[Webサイト]]が紹介された時、
突発的な大量アクセスに耐え切れずに[[サーバー]]が [CODE(HTTP)[[[503]]]]
[[応答]]を返す風景がよく見られます。

[515] [CITE@en[RFC 3507 - Internet Content Adaptation Protocol (ICAP)]]
( ([TIME[2014-06-08 07:17:07 +09:00]] 版))
<http://tools.ietf.org/html/rfc3507#section-4.3.3>

[516] [CITE[Status codes in HTTP]]
( ([TIME[1999-10-27 03:40:19 +09:00]] 版))
<http://www.w3.org/Protocols/HTTP/HTRESP.html#z12>

[4] [[server-side image map]] の実装ファイルが見つからない時に
[CODE(HTTP)[[[503]]]] が返されていたようです [SRC[>>3]]。

[6] おそらくこの古い用法をもとに、[[HTTP状態符号]]の一覧表で [CODE(HTTP)[[[503]]]]
として「Mapping Server Error」を掲載する (おそらく他のどこかからコピペしてきた)
ページが多々あるようです [SRC[例えば >>5]]。

[REFS[
- [3] [CITE[error 500 w/CGI, error 503 w/imagemap - Google グループ]] ([TIME[2015-01-14 11:32:39 +09:00]] 版) <https://groups.google.com/forum/#!topic/comp.infosystems.www.authoring.cgi/tLGJqAyNhNc>
- [5] [CITE[<=]] ([TIME[2005-05-11 19:09:39 +09:00]] 版) <http://www.yakura.jp/http-status/code.htm>
]REFS]

[FIG(quote)[
[FIGCAPTION[
[7] [CITE[ムービー情報API - ツイキャス]]
([TIME[2015-06-24 00:42:29 +09:00]] 版)
<http://twitcasting.tv/indexapimoviestatus.php>
]FIGCAPTION]

> 最大1分間に60回。この制約を超えるとそのIPアドレスからは5分間アクセスできなくなります = HTTP 503 Error

]FIG]
