Apigee ハイブリッドで大規模なメッセージ ペイロードのサポートを構成する

概要

Apigee ハイブリッドでは、最大 30 MB の大規模なメッセージ ペイロードがサポートされています。理論上の上限は 75 MB です。デフォルトのメッセージ ペイロード サイズは 10 MB です。メッセージ ペイロードのサイズをご覧ください。

最大 30 MB のメッセージ ペイロードのサポートを構成する

ハイブリッド インストールの環境で大規模なメッセージ ペイロードをサポートするには、ランタイム構成を次のように変更する必要があります。

  • ヒープサイズを 4 Gi 以上に増やします。
  • メモリ上限を 6 Gi 以上に増やします。
  • メモリリソースのリクエストを 4 Gi 以上に増やします。

これらの設定は、個々の環境またはインストール内のすべての環境に対して構成できます。

大規模なメッセージ ペイロードをサポートするように個々の環境を構成する

大規模なメッセージ ペイロードをサポートするように構成されたプロキシのエンドポイントがインストール内の 1 つまたは少数の環境のみにある場合は、大規模なペイロードをサポートするように環境を構成できます。これにより、大規模なペイロードをサポートする必要がない環境にメモリを追加しなくて済みます。

大規模なメッセージ ペイロードをサポートするように個々の環境を構成するには、envs.components.runtime プロパティを使用します。overrides.yaml ファイルに次の変更を加えます。

  1. 次のスタンザを overrides.yaml ファイルに追加します。
    envs:
    - name: ENV_NAME
      components.
        runtime:
          cwcAppend:
            bin_setenv_max_mem: 4096Mi   # Increase max heap size to 4 gigs
          resources:
            requests:
              memory: 4Gi
            limits:
              memory: 6Gi
    

    詳しくは、以下を参照してください。

  2. 更新する各環境の apigee-env チャートをアップグレードします。

    ドライランを実行します。

    helm upgrade ENV_RELEASE_NAME apigee-env/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      --set env=ENV_NAME \
      -f OVERRIDES_FILE \
      --dry-run=server
    
    • ENV_RELEASE_NAME は、apigee-env チャートのインストールとアップグレードの追跡に使用する名前です。この名前は、インストール内の他の Helm リリース名と重複していない必要があります。通常、これは ENV_NAME と同じにします。ただし、環境と環境グループの名前が同じである場合は、環境と環境グループに対して異なるリリース名(dev-env-releasedev-envgroup-release など)を使用する必要があります。Helm でのリリースの詳細については、Helm ドキュメントの 3 つの大きなコンセプトをご覧ください。
    • ENV_NAME はアップグレードする環境の名前です。
    • OVERRIDES_FILE は、編集した overrides.yaml ファイルです。
  3. チャートをアップグレードします。

    ドライランを実行します。

    helm upgrade ENV_RELEASE_NAME apigee-env/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      --set env=ENV_NAME \
      -f OVERRIDES_FILE
    

大規模なメッセージ ペイロードをサポートするようにすべての環境を構成する

runtime スタンザを変更すると、インストール内のすべての環境にヒープとメモリの上限が設定されます。envs.components.runtime プロパティを使用して、個々の環境でこれらの設定をオーバーライドできます。

  1. 次のスタンザを overrides.yaml ファイルに追加します。
    runtime:
      cwcAppend:
        bin_setenv_max_mem: 4096Mi   # Increase max heap size to 4 gigs
      resources:
        requests:
          memory: 4Gi
        limits:
          memory: 6Gi
    

    詳しくは、以下を参照してください。

  2. インストール内の各環境の apigee-env チャートをアップグレードします。

    ドライランを実行します。

    helm upgrade ENV_RELEASE_NAME apigee-env/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      --set env=ENV_NAME \
      -f OVERRIDES_FILE \
      --dry-run=server
    

    チャートをアップグレードします。

    helm upgrade ENV_RELEASE_NAME apigee-env/ \
      --install \
      --namespace APIGEE_NAMESPACE \
      --set env=ENV_NAME \
      -f OVERRIDES_FILE
    

30 ~ 75 MB のメッセージ ペイロードに関するガイドライン

大きなペイロード シナリオのメッセージ プロセッサに最適なヒープサイズを決定するのは、特定のユースケースによって異なります。ただし、Apigee はこのプロセスを支援するための一般的なガイドラインを提供しています。

Message Processor(MP)あたりのヒープサイズを計算するには、次の値を使用します。

  • Q - MP Pod あたりの最大 QPS
  • L - リクエストあたりのラウンドトリップ レイテンシ(予想されるレイテンシの 95 パーセンタイル)
  • C - MP あたりの合計同時実行数。特定の時点で MP に同時に保持できるリクエストの最大数。これは C = Q * L として計算されます。
  • P_req - クライアントが Apigee に送信したリクエストのペイロード サイズ(MB 単位)
  • P_resp - ターゲットから受信したレスポンスのペイロード サイズ(MB 単位)
  • S - 安全係数(Apigee では 1.5 ~ 2 の範囲を推奨)
  • BASE_HEAP - プロキシ構成などのリクエスト関連以外のリソースを考慮するベースヒープサイズ。(Apigee では 3072Mi を推奨)

安全係数 S とベースヒープサイズを考慮して、MP あたりの合計ヒープは次のように計算されます。

MP あたりのヒープサイズ = BASE_HEAP + C * (P_req + P_resp) * S

大規模なペイロード シナリオの基本オーバーライド構成は次のとおりです。

envs:
  components:
    runtime:
      resources:
        requests:
          cpu: 2000m
          memory: 2Gi
        limits:
          cpu: 4000m
          memory: 4Gi
      cwcAppend:
        bin_setenv_max_mem: 3072Mi # base heap size

計算の例

次の値を使用した計算例を次に示します。

  • 最大 QPS、Q: 2
  • レイテンシ、L: 7 秒
  • リクエスト ペイロード サイズ、P_req: 40 MB
  • レスポンス ペイロード サイズ、P_resp: 40 MB
  • 安全率、S: 1.5
  • ベースヒープサイズ、BASE_HEAP: 3072Mi

ヒープサイズ = 3072 + (2 * 7) * (40+40) * 1.5 = 4752Mi

limits.memory は、推奨されるヒープよりも 1 Gi 多いことが想定されています。

この例では、overrides.yaml に次のように追加します。

envs:
  components:
    runtime:
      resources:
        requests:
          memory: 4Gi
        limits:
          memory: 5.75Gi # approximately 1Gi over 4.75Gi
      cwcAppend:
        bin_setenv_max_mem: 4752Mi

考慮事項

トラフィック バースト

HPA は、QPS の増加に応じて MP がスケーリングされるようにします。ただし、HPA がスケールアップをトリガーするまでに約 60 秒かかります。トラフィックのバーストが過度に高いと、MP でメモリ不足(OOM)エラーが発生する可能性があります。

このようなトラフィックの急増が予想される場合は、適切な安全係数を使用してヒープ使用量をスケールアップしてください。例: S = 2

ヒープ = BASE_HEAP + (Q * L) * (P_req + P_resp) * 2

ポリシーの使用状況

上記の計算には、ポリシーの使用量は含まれていません。Apigee では、リクエスト / レスポンス ペイロードのコピーを作成できます。これにより、ヒープ使用量が大幅に変化する可能性があります。

たとえば、ターゲット レスポンス全体を 3 つコピーする JavaScript ポリシーがある場合、使用する方程式は次のようになります。

Heap per MP = Base Heap + (Q * L) * (P_req + P_resp * 4) * S

メモリ使用量が増加する可能性があるポリシーの例は次のとおりです。

  • AssignMessage
  • JavaScript Callout
  • JavaCallout

モニタリング

ここで提供するガイドラインは、出発点としての役割を果たすことを目的としています。メモリ使用量のモニタリングとアラートを設定することを強くおすすめします。ヒープ使用率が常に高い場合は、安全係数を増やします。

関連情報: