我正在使用 DescribeInstanceTypes AWS EC2 API 调用来获取给定实例类型的 CPU 和内存数量。例如,输入“t3.micro”,我得到 1 VCPU / 1 GiB RAM。
但问题是我们也在使用 ElastiCache。那里的实例类型是“cache.t3.micro”。底层机器是相同的(因此核心与 t3.micro 相同),但内存以某种方式自动保留。
我可以硬编码https://aws.amazon.com/elasticache/pricing/并将其用作查找表,但我宁愿避免这样做。所以我的问题是如何以编程方式确定缓存实例的可用内存。是否还有其他 API 调用(因为前者不理解“cache.t3.micro”)。或者也许有一个简单的公式可以从“t3.micro”计算“cache.t3.micro”的内存。对于更大的机器,“开销”似乎更低(这是有道理的),因此这不是一个恒定因素,而是以某种方式依赖于可用的 CPU 和/或总内存。
答案1
AWS 会保留 25%(如果 Redis 版本低于 2.8.22,则为 50%,我不认为现在可以使用这个)的内存默认的 ElastiCache Redis 实例。这由 reserved-memory-percent 参数控制。除非您在某处更改此参数,否则最好假设可用于缓存的内存。* 实例与 EC2 实例减去 25% 的预留内存相同