アンチパターン: 512 KB 超のデータをキャッシュに保存する

Apigee Edge では、データをランタイムにキャッシュ保存できます。キャッシュ保存したデータを永続化し、高速に取得できます。

  • データは最初に、Message Processor のメモリ内キャッシュ(L1 キャッシュ)に保存されます。
  • L1 キャッシュは、専用に予約されたメモリ量(JVM メモリに対するパーセンテージで指定)によって制限されます。
  • キャッシュ エントリは後から L2 キャッシュに永続的に保存され、すべての Message Processor からアクセスできるようになります。詳細については、以下のセクションをご覧ください。
  • L2 キャッシュには、保存可能なエントリ数に対するハードリミットはありません。ただし、キャッシュに保存可能なエントリの最大サイズは 512 KB に制限されます。512 KB というキャッシュ サイズは、最適なパフォーマンスを実現するために推奨されるサイズです。

アンチパターン

このアンチパターンは、Apigee Edge プラットフォーム内で現在のキャッシュ サイズ制限を超過した場合の影響について説明します。

512 KB を超えるデータがキャッシュされると、次の結果となります。

  • 512 KB を超えるデータは L2 キャッシュには保存できないため、各 Message Processor が最初に実行する API リクエストでは、元のソース(ポリシーまたはターゲット サーバー)からデータを独力で取得する必要があります。
  • 大きなデータ(512 KB 超)を L1 キャッシュに保存すると、プラットフォーム リソースにかかる負担が大きくなりがちです。結果的に、L1 キャッシュ メモリがすぐに満杯になり、他のデータを保存するための容量が少なくなります。このため、思い通りの頻度でデータをキャッシュできなくなります。
  • エントリ数の上限に達すると、Message Processor 内のキャッシュ エントリは削除されます。このデータを取得するには、再度それぞれの Message Processor 上の元のソースから取得することになります。

影響

  • 512 KB を超えるデータは L2 永続キャッシュに保存されません。
  • 元のソース(ポリシーまたはターゲット サーバー)への呼び出し頻度が高くなるため、API リクエストのレイテンシが大きくなります。

ベスト プラクティス

  • 最適なパフォーマンスを得るには、キャッシュに保存するデータサイズを 512 KB 未満に抑えます。
  • 512 KB を超えるデータを保存しなければならない場合は、以下を検討します。
    • サイズの大きなデータを保存するための適切なデータベースを使用

      または

    • データを圧縮

関連情報