跳至内容

如何对 ElastiCache Redis 集群中 CacheHitRate 指标降低的问题进行故障排除?

1 分钟阅读
0

我想对遇到的 Amazon ElastiCache Redis 集群的 CacheHitRate 指标降低问题进行故障排除。

解决方法

CacheHitRate 降低时,缓存未命中数通常会增加。有关详细信息,请参阅监控缓存效率。要对 CacheHitRate 降低进行故障排除,请执行以下操作。

检查 Redis 引擎是否驱逐了键

当 Redis 引擎为管理内存而驱逐键时,在驱逐过程中,可能会出现 CacheHitRate 降低的情况。

要检查 Redis 引擎是否驱逐了键,请查看以下 Amazon CloudWatch 指标:

  • Evictions
  • BytesUsedForCache
  • DatabaseMemoryUsagePercentage

要解决此问题,请扩展您的集群

查看您的键过期配置

如果您的键过期得太快,则 Reclaimed 指标可能会出现激增。要查看 Reclaimed 指标,请运行 INFO 命令,然后在输出中查看过期事件的数量。该指标列出了 Redis 因键的生存时间 (TTL) 到期而删除的键的总数。有关详细信息,请参阅 Redis 网站上的 INFO

要解决此问题,请更新键的 TTL 设置。有关详细信息,请参阅 Redis 网站上的 TTL

查看客户端更新是否删除了键

如果应用程序尝试检索客户端更新已删除的键,则您可能会看到以下变化:

  • CacheMisses 增加
  • CacheHitRate 降低

要确定客户端更新是否删除了键,请查看应用程序中是否存在 FLUSHALLDELUNLINK 等命令的更新。有关详细信息,请参阅 Redis 网站上的 FLUSHALLDELUNLINK

为了减少键的删除,最佳做法是使用基于角色的访问控制 (RBAC)。或者,使用 rename-commands 参数对可能会导致严重问题(例如键被删除)的命令进行重命名,并记下这些命令。有关 rename-commands 参数的详细信息,请参阅适用于 Redis OSS 的 ElastiCache 5.0.6 版本(增强版)

检查 ElastiCache 是否恢复了您的集群

当集群遇到硬件问题时,ElasticCache 会恢复集群并删除缓存中的所有数据。由于缓存是空的,因此从缓存中请求数据会导致缓存未命中。

要检查 ElastiCache 是否恢复了集群,请在 ElastiCache 中的“事件”部分中查看 CacheHitRate 指标。

要提高数据可用性并增强容错能力,请向集群添加只读副本,然后启用具有自动失效转移选项的多可用区

遵循缓存最佳实践

如果 CacheHitsCacheMisses 指标均为 0,则表明没有针对该缓存的任何请求。在这种情况下,CloudWatch不会显示 CacheHitRate 指标的任何数据。

最佳做法是将缓存命中率保持在 0.8 或更高。如果 Redis 在缓存中驱逐了过多的键,或者键已过期或不存在,则缓存命中率会降低。要提高缓存性能,请遵循缓存最佳实践

相关信息

适用于 Valkey 和 Redis OSS 的指标

AWS 官方已更新 1 年前