Apigee Edge のドキュメントを表示しています。
Apigee X のドキュメントに移動。 情報
クライアント アプリケーションによって行われた API リクエストは、バックエンド サービスに到達する前に、Apigee Edge のさまざまなコンポーネントを通過します。ほとんどのクライアント アプリケーションは、これらのリクエストへのレスポンスがタイムリーに受信されることを想定しています。
タイムリーなレスポンスを実現するために、API リクエストが流れる各コンポーネントに I/O タイムアウト値が設定されています。フロー内のいずれかのコンポーネントが前のコンポーネントよりも時間がかかると、前のコンポーネントがタイムアウトし、504 Gateway Timeout エラーで応答します。
タイムアウトを構成する際は、各コンポーネントで値を慎重に構成する必要があります。そうしないと、 504 Gateway Timeout エラーが発生する可能性があります。
このドキュメントでは、Apigee Edge で API リクエストが転送されるさまざまなコンポーネントで I/O タイムアウトを構成するためのベスト プラクティスについて説明します。
I/O タイムアウトの構成に関するベスト プラクティス
I/O タイムアウトを構成する際は、次のベスト プラクティスを検討してください。
- 最初のコンポーネント: API リクエスト フローの最初のコンポーネント(Apigee Edge のクライアント アプリケーション)で、常に最も長いタイムアウトを使用します。
- 最後のコンポーネント: API リクエスト フローの最後のコンポーネント(Apigee Edge のバックエンド サービス)では、常に最小のタイムアウトを使用します。
- コンポーネント間: フロー内の最初のコンポーネントと最後のコンポーネントの間で、各コンポーネントで構成されたタイムアウト値に 2 ~ 3 秒以上の差があることを確認します。
- Router: 特定の仮想ホストの I/O タイムアウト値は、Router で構成するのではなく、常に構成(変更)することをおすすめします。これにより、新しいタイムアウト値は、ルータによって処理されるすべての API プロキシではなく、特定の仮想ホストを使用している API プロキシにのみ影響します。
Router の I/O タイムアウトを構成(変更)するのは、新しい I/O タイムアウト値が必要な場合、または Router で実行されているすべての API プロキシに適用される場合に限ります。
- Message Processor: 特定の API プロキシの I/O タイムアウト値は、Message Processor で構成するのではなく、常に構成(変更)することをおすすめします。これにより、新しいタイムアウト値が、Message Processor によって処理されるすべての API プロキシではなく、特定の API プロキシにのみ影響します。
Message Processor で I/O タイムアウトを構成(変更)するのは、新しい I/O タイムアウト値が必要な場合、または Message Processor で実行されているすべての API プロキシに適用される場合に限ります。
サンプル事例
このセクションのシナリオは、I/O タイムアウト値を正しく設定する方法の理解に役立ちます。
シナリオ 1: クライアント アプリケーションから Apigee Edge への直接リクエスト
このセクションでは、クライアント アプリケーションと Apigee Edge の間に、また Apigee Edge とバックエンド サーバーの間に中間コンポーネントがない Apigee Edge 設定でタイムアウト値を設定する際のベスト プラクティスについて説明します。
中間コンポーネントのない Apigee 設定の例
上記の図のように、中間コンポーネントなしで Apigee Edge が設定されている場合は、次のベスト プラクティスを使用します。
- クライアント アプリケーションは、フロー内の最初のコンポーネントです。最大タイムアウト値はクライアントで設定する必要があります。
- バックエンド サーバーは、フローの最後のコンポーネントです。最小タイムアウト値はバックエンド サーバーで設定する必要があります。
- 次の順序で、各コンポーネントのタイムアウト値を構成します。
次の例は、問題を回避するために、上記のガイドラインに従ってさまざまなコンポーネントに設定されたタイムアウト値を示しています。
シナリオ 2: 中間コンポーネントを介してクライアント アプリケーションから Apigee Edge へのリクエスト
このセクションでは、クライアント アプリケーションと Apigee Edge の間に、また Apigee Edge とバックエンド サーバーの間に 1 つ以上の中間コンポーネントがある Apigee Edge 設定でタイムアウト値を設定する際のベスト プラクティスについて説明します。
中間コンポーネントには、ロードバランサ、コンテンツ配信ネットワーク(CDN)、NGINX などがあります。
クライアントと Apigee Edge の間に 1 つの中間コンポーネントがあり、Apigee Edge とバックエンド サーバーの間に 1 つの中間コンポーネントがある Apigee の設定例
上記の図のように、1 つ以上の中間コンポーネントを使用して Apigee Edge を設定している場合は、次のベスト プラクティスを使用します。
- クライアント アプリケーションは、フロー内の最初のコンポーネントです。最大のタイムアウト値はクライアントで設定する必要があります。
- バックエンド サーバーは、フローの最後のコンポーネントです。バックエンド サーバーで最小のタイムアウト値を設定する必要があります。
- 中間コンポーネントを含む各コンポーネントのタイムアウト値を次の順序で構成します。
次の例は、問題を回避するために、上記のガイドラインに従ってさまざまなコンポーネントに設定されたタイムアウト値を示しています。