LOG IN SIGN UP
Documentation

よくある 503 エラー

  Last updated October 24, 2017

Fastly CDN のエンジン、Varnish が標準的な 503 レスポンスを返すことがあります。これは、オリジンサーバーからデータを取得する際に起こる様々な問題により発生します。503 エラーに対する汎用的ステータスメッセージは「Service Unavailable」ですが、これはいろいろな状況において表示される可能性があります。よくある理由は以下の通りです。

  1. オリジンで 503 エラーが発生し、それを Fastly はそのまま返している。
  2. オリジンがレスポンスヘッダーなしで 503 エラーを返したため、デフォルトのレスポンスが使用された。
  3. オリジンからの HTTP レスポンスのステータス行を読み取ることができなかった。
  4. 適切なレスポンスステータスを含まない "error" ステートメントが、VCL として実行された (例: error 503 "_broken thing_" ではなく error 503 など)。

下記ではよく見られる、標準的だが非汎用的な 503 レスポンスについて説明します。

Error 503 backend read error

Backend read error (バックエンド読み取りエラー) はたいてい、コンテンツをキャッシュする際のバックエンドのタイムアウトエラーに伴い発生します。また、Fastly のキャッシュサーバーがオリジンからコンテンツを取得しようとした際のネットワークエラー (例: ルーターのフェイルオーバー、パケットロス) やオリジンの過負荷によっても発生します。

バックエンドのレスポンスタイムをベンチマークする。 バックエンドのレスポンスタイムは様々な外的要因により変化します。Backend read error が頻繁に、または継続的に発生する場合には、Fastly コントロールパネルの backend timeout 設定の変更によりエラーの発生を防ぐことができます。次のコマンドを実行することで、ベンチマーク用途に適切なレスポンスタイムを測定することができます。

curl -s -w "%{time_total}\n" -o /dev/null http://example.com/path/to/file

バックエンドのタイムアウト設定をより大きな値にする。 アプリケーション内の遅い箇所に対するベンチマークを実施すると、バックエンドからの適切なレスポンスタイムが分かります。Edit a host 設定画面の Advanced options より、バックエンドのタイムアウト値を調整してください。また、オリジンの手前にロードバランサーやファイアウォール等のインターフェイスが設置されている場合、そのタイムアウト値も確認すべきです。

Error 503 connection timed out

Connection timed out (接続タイムアウト) は、Fastly からオリジンへの TCP 接続の確立待ち、または、オリジンからのレスポンス待ちでのタイムアウトにより発生します。Backend read error 同様、接続タイムアウトは一時的なネットワーク上の問題やオリジンの遅延、オリジンまでの距離が大きいこと等を原因として発生します。これらタイムアウトエラーの予防に有効な方法が2つあります。

Error 503 backend write error

Backend write error (バックエンド書き込みエラー) は、Backend Read Error に類似していますが、POST リクエストを Fastly からバックエンドに送信する際に発生します。このエラーは backend read error と同じ方法で解決できます。

Error 503 client read error

Client read error (クライアント読み取りエラー) は、クライアントと Fastly 間のネットワーク上の問題により発生します。また、ユーザーがページの読み込みを中断した場合 (例: ページの読み込みが遅いためにユーザーがブラウザの中断ボタンをクリックする) にも発生します。Backend read error に類似していますが、クライアントからのリクエストを読み取る際に起こります。このエラーが起きたら、Fastly サポートにご連絡ください。ネットワーク上の問題を特定するための支援を提供します。

オリジン設定関連エラー

下記ではよくあるオリジン設定関連のエラーについて説明します。

Error 503 connection refused

Connection Refused (接続拒否) は、Fastly がオリジンの指定されたポートに接続を試みて、それが拒否された際に発生します。このエラーの主な原因は、Fastly コントロールパネルでのオリジンのポート番号の設定ミスです。このエラーを解決するにはポート番号を修正することで、オリジンに接続できる正しいポート番号を設定してください。ポート番号の修正により解決しない場合は、オリジン側の設定を見直して Fastly の IP レンジから接続可能であることを確かめてください。

Error 503 illegal vary header from backend

Illegal vary header from backend (バックエンドからの不正な Vary ヘッダー) は、バックエンドが誤った形式の Vary ヘッダーをレスポンスとして返した場合に発生します。適切な形式の Vary ヘッダーに従い、Fastly は異なるバージョンのオブジェクトを、Vary で指定されたリクエストヘッダーの値に応じて別々にキャッシュします。

Error 503 network unreachable

Network unreachable (到達不可能なネットワーク) は、Fastly から指定された IP レンジへのルートが見つからない時に発生します。このエラーの主な原因は、ルーターの設定ミスや故障です。このエラーを解決するには、ルーターが正常に動作していることや、適切に設定されていることを確かめてください。

オリジンのヘルスステータス関連エラー

下記ではオリジンのヘルスステータス関連のよくあるエラーについて説明します。

Error 503 backend is unhealthy

Backend is unhealthy (バックエンドのヘルスステータス異常) は、ヘルスチェックによりバックエンドがダウンしていると認識されている場合に発生します。Fastly のエッジサーバーは通常、ユーザーからのリクエストを受けてオリジンへリクエストを行います。しかしこのエラーの発生時は、すでにバックエンドのヘルスステータスが異常と認識されているため、Fastly はリクエストを行いません。また、バックエンドへの同時接続数が上限を初めて超えた場合に、backend.max_conn reached エラーとなるべき状況下でこのエラーが誤って表示されることがあります。このエラーが発生する理由として以下が考えられます。

このエラーを解決するには、オリジンが適切に設定されていることと、ヘルスチェックの対象となっているオブジェクトが指定された場所に存在していることを確かめてください。

Error 503 no stale object available

No stale object available (失効済みコンテンツ利用不可) は、バックエンド問題発生時に備えて失効済みコンテンツの配信が設定済みであるにも関わらず、失効済みコンテンツが利用不可かつバックエンドに問題が継続している場合に発生します (結果として失効済みコンテンツが利用できない)。このエラーを解決するには、オリジンを正常に動作させるか、ネットワークを確認してください。

接続数超過エラー

下記ではよくある接続数超過エラーについて説明します。

Error 503 backend.max_conn reached

backend.max_conn reached (バックエンドへの接続数の上限超過) は、Fastly サービス内で定義された同時接続数の上限へ達したバックエンドへ、さらにリクエストしようとした時に発生します。デフォルトで Fastly は、1つのキャッシュノードからオリジンへの接続数を 200 までに制限しています。これはオリジンの過負荷を防ぐことが目的です。大部分のサイトでは、この設定値は十分大きいと考えられます。ヒット以外のリクエスト数が秒間 10,000 未満でこのエラーメッセージが表示される場合は、オリジンが正常に応答していること (例: オリジンのパフォーマンス低下が発生していないか) を確かめてください。接続数の上限を単に増やすことは、事態を悪化させる可能性があります。オリジンの問題ではないことを確認したら、オリジンへの接続数上限を大きくするか、Fastly support にご連絡ください。問題解決に向けた支援を提供いたします。このエラーは、"Error 503 maximum threads for service reached" として表示されることもあります。

Error 503 maximum threads for service reached

Error 503 backend.max_conn reached をご覧ください。

Director 関連エラー

下記ではよくある Director 関連のエラーについて説明します。

Error 503 no healthy backends

No healthy backends (正常なバックエンドなし) は、ヘルスチェックにより正常とみなせるバックエンドが存在しないことにより、Director が設定通りにトラフィックを処理できない場合に発生します。Director は Fastly API 経由でのみ利用でき、バックエンド間のロードバランスを行います。

Error 503 all backends failed or unhealthy

All backends failed or unhealthy (全てのバックエンドがダウン または ヘルスステータス異常) は、全バックエンドのヘルスチェックが失敗した場合、また、Director が複数のバックエンドから同じエラーを受け取った場合に発生します。Director は Fastly API 経由でのみ利用でき、バックエンド間のロードバランスを行います。

Error 503 quorum weight not reached

Quorum weight not reached (Quorum weight 不足) は、利用可能なバックエンドの不足により、Director が設定通りにトラフィックを処理できない場合に発生します。Director は Fastly API 経由でのみ利用でき、バックエンド間のロードバランスを行います。

これらのエラーを解決するには、オリジンの問題の有無を確認した上で、必要であればそれらの問題に対処してください。また、Quorum 設定が適切であることを確かめてください。例えば、5つのバックエンドが設定された Director に対して 85% の Quorum 設定を適用すると、1つのバックエンドのヘルスチェック失敗で、Director 全体のヘルススタータスが異常であると判断されます。

TLS 関連エラー

下記ではよくある TLS 関連のエラーについて説明します。

Error 503 SSL handshake error

SSL handshake error (SSL ハンドシェイクエラー) は、Fastly とオリジン間で TLS ネゴシエーションが失敗した場合に発生します。このエラーを解決するには、オリジンの TLS 設定を見直して修正してください。

Error 503 unable to get local issuer certificate

Unable to get local issuer certificate (発行元の証明書が存在しない) は、証明書チェーン内の証明書が存在しない、または無効な場合に発生するエラーです。このエラーの原因を特定するには、オリジンに対する SSL test の実行を推奨します。SSL test を用いて、オリジンにインストールされた証明書の問題を見つけることが可能です。このエラー解決に有効な方法が2つあります。

Error 503 hostname doesn't match against certificate

Hostname doesn't match against certificate (ホスト名と証明書の不一致) は、サービスのオリジン TLS 設定で指定された証明書のホスト名が、コモンネーム (CN) または Subject Alternate Names (SAN) のいずれとも一致しない場合に発生するエラーです。このエラーを解決するには、オリジン証明書の CN または SAN のいずれかと一致する名前を、証明書ホスト名として入力してください。

Error 503:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert

このエラーは、オリジンとの TLS ハンドシェイクにおいて Server Name Indication (SNI) が必要であるにもかかわらず、SNI hostname フィールドが空欄か、または間違った値が入力されている場合に発生します。このエラーを解決するには、SNI hostname フィールドにホスト名を入力してください。たいていの場合、この値は証明書ホスト名の内容と一致します。

Error 503 certificate has expired

Certificate has expired (証明書の有効期限切れ) は、オリジンにインストールされた証明書の有効期限が切れている場合に発生します。このエラーを解決するには、証明書を更新するか、新しいものをダウンロードしてください。


Back to Top