【问题标题】:What determines AWS Redis' usable memory? (OOM issue)什么决定了 AWS Redis 的可用内存? (OOM 问题)
【发布时间】:2022-04-30 02:30:47
【问题描述】:

我在一个项目中使用 AWS Redis,但遇到了内存不足 (OOM) 问题。在调查这个问题时,我发现了几个影响可用内存量的参数,但数学似乎不适用于我的情况。我是否缺少任何变量?

我正在使用:

  • 3 个分片,每个分片 3 个节点
  • cache.t2.micro 实例类型
  • default.redis4.0.cluster.on缓存参数组

ElastiCache website 表示 cache.t2.micro 有 0.555 GiB = 0.555 * 2^30 B = 595,926,712 B 内存。

default.redis4.0.cluster.on 参数组有maxmemory = 581,959,680(就在实例内存下面)和reserved-memory-percent = 25%581,959,680 B * 0.75 = 436,469,760 B available.

现在,当我用完内存时查看 CloudWatch 中的 BytesUsedForCache 指标,我看到大约 457M、437M、397M、393M 字节的节点。一个节点应该不可能超过上面计算的 436M 字节!

我错过了什么;是否还有其他因素决定了可用内存量?

【问题讨论】:

  • 出于兴趣,当它耗尽内存时会发生什么?你能不能不向缓存中添加更多的失败比这更壮观?
  • @mattfreake 我相信我收到的具体错误是“lpush failed”。我不记得确切的措辞,但并不明显我是OOM。我猜它可以添加到未散列到 OOM 的特定节点的不同密钥,但我无法验证。

标签: amazon-web-services redis amazon-elasticache


【解决方案1】:

我记得在某处读过它,但我现在找不到。我相信 BytesUsedForCache 是 Redis 用于存储数据/缓冲区的 RAM 和 SWAP 的总和。

正如 Elasticache 的文档所建议的那样,SWAP 不应超过 300 MB。 我建议当时检查 SWAP 指标。

【讨论】:

  • 感谢您的回复!不幸的是,3 年后我认为我不再拥有这些指标了:(
猜你喜欢
  • 2012-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-21
  • 2017-08-26
  • 2010-09-21
  • 1970-01-01
  • 2019-05-12
相关资源
最近更新 更多