在消息处理器上设置 L1 缓存过期时间

Apigee Edge 提供缓存以持久保留数据 所有请求收到 API 数据时,它会在缓存中存储一小段时间 然后被删除数据在被删除之前保留的最长时间 称为缓存的过期时间或存留时间 (TTL)。 每个缓存都有默认 TTL,但在某些情况下,您可能需要更改 TTL 值 提高 API 性能。

缓存类型

API 数据存储在两种类型的缓存中:

  • 级别 1 (L1):内存缓存,访问速度更快,但可用存储空间较少 容量。
  • 级别 2 (L2):Cassandra 数据存储区中的永久性缓存,速度较慢 但更多的可用存储容量

当 L1 缓存中的数据条目达到 L1 TTL 时,系统会将其删除。不过, 条目的副本保存在 L2 缓存中(L2 缓存的 TTL 比 L1 缓存长), 其他消息处理器仍然可以访问这些数据。 请参阅内存中和 永久性缓存级别

最大 L1 TTL

在适用于私有云的 Edge 中,您可以为每条消息设置 L1 缓存 TTL 上限 处理器使用最大 L1 TTL 属性 (conf_cache_max.l1.ttl.in.seconds)。 L1 缓存中的条目会在达到最大 L1 TTL 值后过期,并被删除。

注意:

  • 默认情况下,最大 L1 TTL 处于停用状态(值为 -1), 在这种情况下,L1 缓存中条目的 TTL 确定 根据 PopulateCache 政策的 <ph type="x-smartling-placeholder"></ph> 过期设置(针对 L1 和 L2 缓存)。
  • 仅当 L1 TTL 的值小于总体缓存过期时间时,最大 L1 TTL 才会产生影响。

设置最大 L1 TTL

您可以在消息处理器上设置最大 L1 TTL,如下所示:

  1. 打开 配置文件 /opt/apigee/customer/application/message-processor.properties 。如果该文件不存在,请创建该文件。
  2. 将最大 L1 TTL 属性设置为所需的值:
    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 TTL 的指南

设置最大 L1 TTL 时,请谨记以下准则:

  • RPC 未命中:如果您发现远程过程调用 (RPC) 未命中 消息处理器 (MP) - 尤其是在多个数据中心, 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 调整为可平衡频率的值 与 Cassandra 上的潜在负载相关。

我们建议将 conf_cache_max.l1.ttl.in.seconds 的值设置为至少 180 秒(3 分钟),以确保数据处理顺畅运行。