如何在ElastiCache上计算redis内存使用百分比

时间:2015-12-09 09:18:57

标签: redis amazon-elasticache

我想在ElastiCache上监控我的redis缓存集群。从AWS / Elasticache我可以获得FreeableMemory和BytesUsedForCache等指标。如果我没错,BytesUsedForCache是​​集群使用的内存(假设集群中只有一个节点)。我想计算内存的百分比用途。任何人都可以帮我获得Redis中内存使用的百分比。

4 个答案:

答案 0 :(得分:1)

我们遇到了同样的问题,因为我们想监视数据消耗的ElastiCache Redis内存的百分比。 正确编写后,您需要查看BytesUsedForCache-这是您存储在Redis中的数据所消耗的内存量(以字节为单位)。 其他两个重要数字是

  1. 用于ElastiCache节点的AWS实例类型的可用RAM,请参阅https://aws.amazon.com/elasticache/pricing/

  2. 您的参数reserved-memory-percent的值(检查ElastiCache参数组)。这是为“非数据目的”保留的RAM百分比,即为操作系统以及在那里运行AWS来管理ElastiCache节点所需的任何AWS。默认情况下为25%。参见https://docs.aws.amazon.com/AmazonElastiCache/latest/red-ug/redis-memory-management.html#redis-memory-management-parameters

因此ElastiCache中数据的总可用内存为

(100 - reserved-memory-percent) * instance-RAM-size

(在我们的例子中,我们使用实例类型cache.r5.2xlarge,具有52.82 GB RAM,我们的默认设置为reserved-memory-percent = 25%。 在Redis中使用info命令检查后,我发现maxmemory_human = 39.61 GB,等于52.82 GB的75%。)

因此,已用内存与可用内存之比为

BytesUsedForCache / ((100 - reserved-memory-percent) * instance-RAM-size)

答案 1 :(得分:0)

您将必须根据所选节点的大小来计算此值。有关更多信息,请参见这两篇文章。

定价文档为您提供设置的大小。

https://aws.amazon.com/elasticache/pricing/

https://forums.aws.amazon.com/thread.jspa?threadID=141154

答案 2 :(得分:0)

通过比较freeableMemorybytesUsedForCache指标,您将拥有Elasticache非集群模式的可用内存(不确定是否也适用于集群模式)。

这是我们用来监视缓存的NRQL:

SELECT Max(`provider.bytesUsedForCache.Sum`) / (Max(`provider.bytesUsedForCache.Sum`) + Min(`provider.freeableMemory.Sum`)) * 100 FROM DatastoreSample WHERE provider = 'ElastiCacheRedisNode'

这基于以下内容:

  • FreeableMemory :主机上可用的可用内存量。这源自操作系统报告为可释放的RAM,缓冲区和缓存。AWS CacheMetrics HostLevel
  • BytesUsedForCache :Redis为所有目的分配的字节总数,包括数据集,缓冲区等。这是从Redis INFO的used_memory统计信息中得出的。{{3} }

因此BytesUsedForCache(Redis使用的内存量)+ FreeableMemory(Redis可以访问的数据量)= Redis可以使用的总内存。

答案 3 :(得分:0)

随着 18 个额外 CloudWatch 指标的发布,您现在可以使用 DatabaseMemoryUsagePercentage 并查看 redis 中的内存利用率百分比。

在内存部分查看有关指标的更多信息 here