<ph type="x-smartling-placeholder"></ph>
現在、Apigee Edge のドキュメントが表示されています。
Apigee X のドキュメント。 詳細
動画
503 サービス利用不可エラーの解決方法について詳しくは、次の動画をご覧ください。
動画 | 説明 |
---|---|
<ph type="x-smartling-placeholder"></ph> 503 Service Unavailable Error from Backend Server(バックエンド サーバーからの 503 サービス利用不可エラー) | 以下の詳細をご確認ください。
<ph type="x-smartling-placeholder">
|
症状
クライアント アプリケーションが HTTP レスポンス ステータスを受信する 503 に、メッセージ Service Unavailable が続く API プロキシ呼び出しです
エラー メッセージ
次のいずれかのエラー メッセージが表示されます。
HTTP/1.1 503 Service Unavailable
HTTP/1.1 503 Service Unavailable: Back-end server is at capacity
次のようなエラー メッセージが表示されることもあります。 HTTP レスポンス内で、次のように記述します。
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
注: 上記のレスポンス コードとエラー メッセージは一例にすぎません。 エラー メッセージなしでエラー レスポンス コードのみが返されることもあります。 エラー レスポンス コード、エラー メッセージの形式と内容は、 バックエンドサーバーを実装する必要があります
原因
HTTP ステータス コード 503 は、現在サーバーが受信 できます。このエラーは通常、サーバーがビジー状態であるか、 一時的に停止します。
503 Service Unavailable レスポンスの考えられる原因は次のとおりです。
原因 | 説明 | トラブルシューティングの手順を実施できるユーザー |
---|---|---|
サーバーの過負荷 | バックエンド サーバーが過負荷になっているか処理能力を超えているため、新しいトラフィックを処理できません 受信クライアント リクエスト。 | Edge Public Cloud ユーザーと Edge Private Cloud ユーザー |
メンテナンス中のサーバー | バックエンド サーバーが一時的にメンテナンス中の可能性があります。 | Edge Public Cloud ユーザーと Edge Private Cloud ユーザー |
原因: メンテナンス中のサーバー/サーバーの過負荷
Apigee Edge では、バックエンド サーバーから 503 Service Unavailable Error が返されることがある。 次のいずれかの状況に陥ります。
- バックエンド サーバーが過負荷またはビジー状態で、新しいリクエストを処理できない。
- バックエンド サーバーがメンテナンスのため一時的に停止しています。
診断
エラーを診断するには、次の 3 つの方法のいずれかを使用できます。
- Trace ツール
- NGINX アクセスログ
- バックエンド サーバーへの直接呼び出し
以下のタブをクリックして、それぞれの方法をご確認ください。
Trace ツール
- トレース セッションを有効にします。 API 呼び出しを行って問題を再現し、「503 Service Unavailable」を再現します。
- 失敗したリクエストのいずれかを選択し、トレースを調べます。
- トレースのさまざまなフェーズを移動して、エラーが発生した場所を特定します。
- ターゲット サーバーからレスポンスとして 503 エラーが返された場合は、
503 エラーの原因はターゲット サーバーです。
以下は、503 Service Unavailable レスポンスが受信されたことを示すトレースのスクリーンショットです。 次のコマンドを入力します。
- [Response received from target server] フェーズをクリックして、
[Response Headers] セクションと [Response Content] セクションで、有用な情報があるかどうかを確認できます。
<ph type="x-smartling-placeholder">
- </ph>
- 応答ヘッダーには、サーバーヘッダーを含む場合があります。 エラー レスポンスの送信元。
- レスポンス コンテンツには、その理由に関する追加情報が含まれる場合があります。 ターゲット サーバーから 503 レスポンス コードが送信されました。
- チェックして、503 エラーがターゲット サーバーからのものであることを確認します。
AX 内の X-Apigee-fault-source と X-Apigee-fault-code の値
(記録されたアナリティクス データ)トレースのフェーズを以下の手順で行います。
<ph type="x-smartling-placeholder">
- </ph>
- 以下のスクリーンショットに示すように、[AX (Analytics Data Recorded)] フェーズをクリックします。
- [Phase Details] で [Response Headers] セクションまで下にスクロールし、値を確認します。 X-Apigee-fault-code と X-Apigee-fault-source を次のように設定します。
- X-Apigee-fault-source と X-Apigee-fault-code の値が一致する場合
503 エラーの原因が
target server:
レスポンス ヘッダー 値 X-Apigee-fault-source ターゲット X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode
- プロキシ チェーンを使用しているかどうかを確認する(ターゲット サーバー/ターゲット エンドポイントが
Apigee での別のプロキシの呼び出しこれを判断するには:
<ph type="x-smartling-placeholder">
- </ph>
- 「Request sent to target server」フェーズに戻り、 [Show Curl] ボタンをクリックして、ターゲット サーバーのホスト エイリアスを特定します。
- ターゲット サーバーのホスト エイリアスが仮想ホストのエイリアスを指している場合、そのエイリアスは プロキシ チェーン。この場合、連鎖しているサービスに対して上記のすべての手順を繰り返す必要があります。 503 Service Unavailable エラーの実際の原因を特定します。 このような場合、他のチェーン接続のプロキシで 503 Service Unavailable が発生することがある さまざまなステージの情報も表示されます。 こちらのハンドブックをご覧ください。
- ターゲット サーバーのホスト エイリアスがバックエンド サーバーを指している場合は、 解決策。
NGINX アクセスログ
また、NGINX のアクセスログを参照して、503 ステータス コードが送信されたかどうかを判断することもできます。 バックエンドサーバーによって 書き込まれますこの問題が過去に発生した場合は特に便利です。 または、問題が断続的に発生し、UI でトレースをキャプチャできない場合。 次の手順で NGINX アクセスログからこの情報を特定します。
- NGINX アクセスログを確認します。
/opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log
- 特定の期間に特定の API プロキシの 503 エラーを検索する (過去に発生した問題の場合)、または 503 でまだ失敗しているリクエスト。
- 503 エラーが発生している場合は、エラーの発生元がバックエンド サーバーかどうかを確認します。
X-Apigee-fault-source と X-Apigee-fault-code の値が一致している場合、
表示される値
下の表では、バックエンド サーバーからの 503 エラーが表示されています。
レスポンス ヘッダー 値 X-Apigee-fault-source ターゲット X-Apigee-fault-code messaging.adaptors.http.flow.ErrorResponseCode 次に、ターゲット サーバーに起因する 503 エラーを示すサンプル エントリを示します。
- 特定の API プロキシを確認し、 プロキシ チェーン(例: もし ターゲット サーバー/ターゲット エンドポイントが Apigee の別のプロキシを呼び出しません。以下を使用している場合: プロキシ チェーン接続の場合は、次の時点まで、チェーンされたプロキシに対して上記の手順をすべて繰り返す必要があります。 503 Service Unavailable エラーの原因を特定します。このような場合 「503 Service Unavailable(サービス利用不可)」は、他のステージにある他のチェーン プロキシでも発生する可能性があります。 このハンドブックで診断できます
- プロキシ チェーンを使用していないことを確認し、503 エラーの原因が [解決策] に移動します。
バックエンド サーバーへの呼び出し
バックエンド サーバーを直接呼び出して、同じ結果が得られることを確認できます。 Apigee Edge からリクエストが行われたときに受信した 503 Service Unavailable レスポンス。
- 必要なヘッダー、クエリ パラメータ、 リクエストの一部としてバックエンド サーバーに渡す必要があります。
- バックエンド サービスが一般公開されている場合は、curl コマンドを使用し、 Postman または他の REST クライアントを使用して、バックエンド サーバー API を直接呼び出すことができます。
- Message Processor からのみバックエンド サーバーにアクセスできる場合は、 curl コマンド、Postman、その他の REST クライアントを使用して、バックエンド サーバーの API を直接呼び出す Message Processor から返されます
- バックエンド サービスが実際に 503 Service Unavailable エラーを返していることを確認します。
解決策
503 エラーがバックエンド サーバーから発生していることが確実な場合は、以下を実行します。 問題を解決するには、
- 問題の原因がバックエンド サーバーがメンテナンスで停止している場合、 メンテナンス期間の終了後は、バックエンド サーバーをオンラインにすることができます。
- 問題の原因がバックエンド サーバーが過負荷になっている場合は、 バックエンド サーバーにアクセスできる場合は、この問題を修正します。それ以外の場合 場合によっては、バックエンド サーバー チームと協力して問題を解決する必要があります。
API Monitoring を使用した問題の診断
API Monitoring を使用すると、 迅速に診断し、エラー、パフォーマンス、 レイテンシの問題とその原因(デベロッパー アプリ、API プロキシ、バックエンド ターゲット、 説明します。
サンプルを使用する API に関する 5xx 問題をトラブルシューティングする方法を示すシナリオ API Monitoring を使用しますたとえば、電話番号が一定回数に達したときに通知されるようにアラートを Messaging.adaptors.http.flow.ErrorResponseCode 障害のうち、特定のしきい値を超えるエラーの割合。
診断情報の収集が必要な場合
上記の手順でも問題が解決しない場合は、 確認してから、Google 担当者までお問い合わせください。 Apigee サポート。
パブリック クラウド ユーザーの場合は、次の情報をお知らせください。
- 組織名
- 環境名
- API プロキシ名
- 503 エラーを再現するための curl コマンドを完成させる
- 503 Service Unavailable エラーを含むリクエストを含むトレース ファイル
- 現在、503 エラーが発生していない場合は、タイムゾーンと期間を指定します。 過去に 503 エラーが発生したときの情報です。
プライベート クラウドをご利用の場合は、次の情報を提供してください。
- 失敗したリクエストについて観測された完全なエラー メッセージ。
- 503 エラーが発生している組織、環境名、API プロキシ名。
- API プロキシ バンドル。
- 503 Service Unavailable エラーを含むリクエストを含むトレース ファイル。
- NGINX アクセスログ。
/opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log
- Message Processor のログ。
/opt/apigee/var/log/edge-message-processor/logs/system.log
- 503 エラーが発生したときのタイムゾーン情報の期間。