Apigee Edge には、リクエスト間でデータを永続化するためのキャッシュ機能があります。受信した API データは、キャッシュに短期間保存されてから、削除されます。削除されるまでのデータの最長保持期間は、キャッシュの有効期限または有効期間(TTL)と呼ばれます。各キャッシュにはデフォルトの TTL がありますが、API のパフォーマンスを改善するために TTL 値の変更が必要になる場合があります。
キャッシュのタイプ
API データは、次の 2 種類のキャッシュに保存されます。
- レベル 1(L1): メモリ内キャッシュ。アクセスは高速ですが、使用可能なストレージ容量は少なくなります。
- レベル 2(L2): Cassandra データストア内の永続キャッシュ。アクセスは低速ですが、利用可能なストレージ容量が多くなります。
L1 キャッシュのデータエントリが L1 TTL に達すると、そのエントリは削除されます。ただし、エントリのコピーは L2 キャッシュ(L1 キャッシュよりも TTL が長い)に保持され、他の Message Processor から引き続きアクセスできます。キャッシュの詳細については、メモリ内キャッシュ レベルと永続キャッシュ レベルをご覧ください。
最大 L1 TTL
Edge for Private Cloud では、最大 L1 TTL プロパティ(conf_cache_max.l1.ttl.in.seconds
)を使用して、メッセージ プロセッサごとに最大 L1 キャッシュ TTL を設定できます。L1 キャッシュのエントリは、最大 L1 TTL 値に達すると期限切れになり、削除されます。
Notes:
- デフォルトでは、最大 L1 TTL は無効になっています(値
-1
)。この場合、L1 キャッシュのエントリの TTL は、PopulateCache ポリシーの 有効期限の設定(L1 キャッシュと L2 キャッシュの両方)によって決まります。 - 最大 L1 TTL は、その値がキャッシュ全体の有効期限よりも小さい場合にのみ効果があります。
最大 L1 TTL の設定
Message Processor の最大 L1 TTL は次のように設定できます。
- エディタで
構成ファイル
/opt/apigee/customer/application/message-processor.properties
を開きます。ファイルが存在しない場合は作成します。 - [Max L1 TTL] プロパティを目的の値に設定します。
conf_cache_max.l1.ttl.in.seconds = 180
180
秒の値にすることをおすすめします。 - プロパティ ファイルの所有者を「apigee」ユーザーにします。
chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
- Message Processor を再起動します。
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
最大 L1 TTL の設定に関するガイドライン
最大 L1 TTL を設定するときは、次のガイドラインに留意してください。
- RPC ミス: Message Processor(MP)間(特に複数のデータセンター間)にリモート プロシージャ コール(RPC)のミスが発生している場合、L1 キャッシュに古いエントリがある可能性があります。このエントリは、L1 キャッシュから削除されるまで古いままです。最大 L1 TTL を低い値に設定すると、古いエントリが強制的に削除され、L2 キャッシュの新しい値に速やかに置き換えられます。
解決策:conf_cache_max.l1.ttl.in.seconds
を減らします。 - Casandra への過度の負荷: 最大 L1 TTL の値を設定すると、L1 キャッシュ エントリが頻繁に期限切れになり、L1 キャッシュミスと L2 キャッシュ ヒットが増加します。L2 キャッシュはより頻繁にヒットするため、Cassandra の負荷は増加します。
解決策:conf_cache_max.l1.ttl.in.seconds
を増やします
原則として、最大 L1 TTL は、MP 間の RPC ミスの頻度と Cassandra の潜在的な負荷とのバランスが取れるように調整します。
処理をスムーズに継続できるよう、conf_cache_max.l1.ttl.in.seconds
の値を 180
秒(3 分)以上に設定することをおすすめします。