Apigee Edge 提供快取功能,可跨要求保留資料。收到 API 資料後,系統會將資料暫時儲存在快取中,然後刪除。資料在刪除前保留的時間長度上限,稱為快取的「到期時間」或「存留時間」 (TTL)。每個快取都有預設存留時間,但有時可能需要變更存留時間值,才能提升 API 效能。
快取類型
API 資料會儲存在兩種快取中:
- 第 1 級 (L1):記憶體內快取,存取速度較快,但可用儲存容量較少。
- 第 2 級 (L2):Cassandra 資料儲存庫中的永久快取,存取速度較慢,但可用儲存空間容量較大。
當 L1 快取中的資料項目達到 L1 存留時間時,就會遭到刪除。不過,系統會在 L2 快取 (存留時間比 L1 快取長) 中保留該項目的副本,其他訊息處理器仍可存取該項目。如要進一步瞭解快取,請參閱「記憶體內和永久快取層級」。
L1 存留時間上限
在 Edge for Private Cloud 中,您可以使用 Max L1 TTL 屬性 (conf_cache_max.l1.ttl.in.seconds),為每個訊息處理器設定 L1 快取存留時間上限。L1 快取中的項目會在達到 Max L1 TTL 值後過期並刪除。
注意:
- 根據預設,L1 存留時間上限為停用狀態 (值為
-1),在這種情況下,L1 快取中項目的存留時間是由 PopulateCache 政策的 到期設定 (適用於 L1 和 L2 快取) 決定。 - 只有在值小於整體快取到期時間時,L1 存留時間上限才會生效。
設定 L1 存留時間上限
您可以按照下列步驟,在訊息處理器上設定 L1 存留時間上限:
- 在編輯器中開啟
設定檔
/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
- 重新啟動訊息處理器:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
設定 L1 存留時間上限的指南
設定 L1 存留時間上限時,請注意下列事項:
- RPC 遺漏:如果您發現訊息處理器 (MP) 之間有遠端程序呼叫 (RPC) 遺漏,尤其是跨多個資料中心,則 L1 快取可能有過時項目,這些項目會保持過時狀態,直到從 L1 快取中刪除為止。將 L1 存留時間上限設為較低的值,可強制移除任何過時項目,並盡快以 L2 快取中的新值取代。
解決方法:降低conf_cache_max.l1.ttl.in.seconds。 - Casandra 負載過高:設定 L1 存留時間上限值後,L1 快取項目會更常到期,導致 L1 快取失敗和 L2 快取命中次數增加。由於 L2 快取會更常命中,Cassandra 的負載會增加。
解決方法:提高conf_cache_max.l1.ttl.in.seconds
一般來說,請將 Max L1 TTL 調整為一個值,平衡 MP 之間的 RPC 遺漏頻率與 Cassandra 的潛在負載。
建議將 conf_cache_max.l1.ttl.in.seconds 的值設為至少 180 秒 (3 分鐘),確保處理作業順利執行。