アンチパターン: 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 を超えるデータを保存しなければならない場合は、以下の点を検討してください。
    • サイズの大きなデータを保存するための適切なデータベースを使用する

      または

    • データを圧縮

関連情報