我想对遇到的 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 降低
要确定客户端更新是否删除了键,请查看应用程序中是否存在 FLUSHALL、DEL 或 UNLINK 等命令的更新。有关详细信息,请参阅 Redis 网站上的 FLUSHALL、DEL 或 UNLINK。
为了减少键的删除,最佳做法是使用基于角色的访问控制 (RBAC)。或者,使用 rename-commands 参数对可能会导致严重问题(例如键被删除)的命令进行重命名,并记下这些命令。有关 rename-commands 参数的详细信息,请参阅适用于 Redis OSS 的 ElastiCache 5.0.6 版本(增强版)。
检查 ElastiCache 是否恢复了您的集群
当集群遇到硬件问题时,ElasticCache 会恢复集群并删除缓存中的所有数据。由于缓存是空的,因此从缓存中请求数据会导致缓存未命中。
要检查 ElastiCache 是否恢复了集群,请在 ElastiCache 中的“事件”部分中查看 CacheHitRate 指标。
要提高数据可用性并增强容错能力,请向集群添加只读副本,然后启用具有自动失效转移选项的多可用区。
遵循缓存最佳实践
如果 CacheHits 和 CacheMisses 指标均为 0,则表明没有针对该缓存的任何请求。在这种情况下,CloudWatch不会显示 CacheHitRate 指标的任何数据。
最佳做法是将缓存命中率保持在 0.8 或更高。如果 Redis 在缓存中驱逐了过多的键,或者键已过期或不存在,则缓存命中率会降低。要提高缓存性能,请遵循缓存最佳实践。
相关信息
适用于 Valkey 和 Redis OSS 的指标