在訊息處理器中設定 L1 快取到期時間

Apigee Edge 提供快取功能以保留資料 在所有要求中查詢收到 API 資料後,該資料會暫時儲存在快取中 然後刪除資料保留時間上限 稱為快取的「到期時間」,或稱為「存留時間」。 每個快取都有預設的存留時間,但在某些情況下,您可能需要變更存留時間值 以便提升 API 效能

快取類型

API 資料會儲存在兩種快取中:

  • 第 1 級 (L1):記憶體內快取,存取速度較快,但可用的儲存空間較少 容量。
  • 第 2 級 (L2):Cassandra 資料儲存庫中的永久快取,執行速度較慢 提供更豐富的儲存空間容量

如果 L1 快取中的資料項目達到 L1 存留時間,就會刪除。不過, 項目副本會保留在 L2 快取中 (存留時間比 L1 快取長), ,其他訊息處理器仍可存取該檔案。 請參閱「記憶體內建和 永久快取等級

L1 存留時間上限

在 Edge for Private Cloud 中,您可以為每則訊息設定 L1 快取存留時間上限 處理器使用最大 L1 TTL 屬性 (conf_cache_max.l1.ttl.in.seconds)。 L1 快取中的項目將達到 L1 存留時間上限值並遭到刪除。

注意:

  • 「L1 TTL」上限預設為停用 (值為 -1), 如果是這種情況,系統會判定 L1 快取中項目的存留時間 遭到 PopulateCache 政策的 到期設定 (L1 和 L2 快取)。
  • 只有當 L1 TTL 值小於整體快取到期時間時,這項設定才會產生影響。

設定 L1 存留時間上限

您可以為訊息處理器設定 L1 存留時間上限,如下所示:

  1. 開啟 設定檔 /opt/apigee/customer/application/message-processor.properties 「在編輯器中設定」如果檔案不存在,請建立該檔案。
  2. 將 L1 存留時間上限屬性設為所需值:
    conf_cache_max.l1.ttl.in.seconds = 180

    建議值是 180 秒。

  3. 請確定屬性檔案的擁有者為「apigee」使用者:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
  4. 重新啟動訊息處理器:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart

L1 存留時間上限設定指南

設定 L1 存留時間上限時,請謹記下列規範:

  • 遠端程序呼叫 (RPC) 失敗:如果發現 訊息處理器 (MP): 尤其是在多個資料中心之間 L1 快取可能有過時的項目,這些項目在刪除之前都會保持過時 來自 L1 快取的 IP 位址將最高 L1 存留時間設為較低的值,會強制所有 過時的項目,並更快換成 L2 快取中的最新值。
    解決方法:調低 conf_cache_max.l1.ttl.in.seconds
  • Casandra 的負載過多:如果設定 L1 TTL 上限的值,L1 快取項目 更常過期 會導致更多 L1 在快取中找不到所需資料,以及更多 L2 快取命中。因為 L2 快取會較常命中 Cassandra 會產生負載增加。
    解決方法:增加 conf_cache_max.l1.ttl.in.seconds

一般而言,將「最高 L1 存留時間」調整為平衡頻率 代表 Cassandra 之間的遠端程序呼叫 (RPC) 失敗,且 Cassandra 上有潛在負載。

建議您將 conf_cache_max.l1.ttl.in.seconds 的值設為至少 180 秒 (3 分鐘) 以確保處理程序順暢。