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 値に達すると期限切れになり、削除されます。
メモ:
- デフォルトでは、最大 L1 TTL は無効になっています(値
-1
)。この場合、L1 キャッシュのエントリの TTL は PopulateCache ポリシーの 有効期限設定(L1 キャッシュと L2 キャッシュの両方)によって決まります。 - 最大 L1 TTL は、その値がキャッシュ全体の有効期限よりも小さい場合にのみ有効です。
最大 L1 TTL の設定
メッセージ プロセッサの L1 TTL の上限は、次のように設定できます。
- エディタで
構成ファイル
/opt/apigee/customer/application/message-processor.properties
を開きます。ファイルが存在しない場合は作成します。 - 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 ミス: メッセージ プロセッサ(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
を増やします。
原則として、Max L1 TTL は、Cassandra の潜在的な負荷と MP 間の RPC ミスの頻度のバランスが取れるように調整します。
処理をスムーズに進めるため、conf_cache_max.l1.ttl.in.seconds
の値を 180
秒(3 分)以上に設定することをおすすめします。