是什么决定AWS Redis的可用内存?(OOM问题)

Mat*_*Woo 5 amazon-web-services redis amazon-elasticache

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

我正在使用:

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

ElastiCache网站说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字节!

我想念的是什么?还有其他确定可用内存量的事情吗?

Ted*_*ard 0

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

Elasticache 的文档建议 SWAP 不应高于 300 MB。我建议当时检查一下 SWAP 指标。