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,如下所示:
- 打开
配置文件
/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
- 重启消息处理器:
/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 分钟),以确保数据处理顺畅运行。