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 では、Max L1 TTL プロパティ(conf_cache_max.l1.ttl.in.seconds)を使用して、各 Message Processor の最大 L1 キャッシュ TTL を設定できます。L1 キャッシュのエントリは、Max L1 TTL 値に達すると期限切れになり、削除されます。
注:
- デフォルトでは、Max L1 TTL は無効になっています(値は
-1)。この場合、L1 キャッシュ内のエントリの TTL は、PopulateCache ポリシーの 有効期限の設定(L1 キャッシュと L2 キャッシュの両方)によって決まります。 - 最大 L1 TTL は、その値がキャッシュの有効期限全体よりも小さい場合にのみ有効です。
最大 L1 TTL の設定
Message Processor で Max 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 ミス: メッセージ プロセッサ(MP)間でリモート プロシージャ コール(RPC)ミスが発生している場合(特に複数のデータセンターにまたがっている場合)、L1 キャッシュに古いエントリが存在する可能性があります。これらのエントリは、L1 キャッシュから削除されるまで古いままです。Max 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を増やす
原則として、MP 間の RPC ミスの頻度と Cassandra の潜在的な負荷のバランスが取れる値に Max L1 TTL を調整します。
処理をスムーズに実行するために、conf_cache_max.l1.ttl.in.seconds の値を 180 秒(3 分)以上に設定することをおすすめします。