为什么在 ElastiCache 中会发生交换?

1 分钟阅读
0

我看到我的 Amazon ElastiCache 实例中的交换活动有所增加? 如何解决此问题?

简短描述

ElastiCache 在 Linux 操作系统(OS)上运行。交换行为由操作系统控制,并受操作系统版本或活动模式等因素的影响。实例的交换使用量会出现波动,这是预期的行为。

当系统在磁盘和 RAM 之间移动页面时,如果没有足够的可用随机存取内存(RAM),则会出现交换问题。

Linux 操作系统主动重新定位内存页以进行交换,主要有两个原因:

  • ElastiCache 节点承受着内存压力
  • Linux 将不常访问的内存交换到磁盘

解决方法

ElastiCache 节点承受着内存压力

如果您的缓存节点使用的内存超过实例的可用内存,则 Linux 会将数据从内存交换到磁盘以释放内存空间供使用。FreeableMemory CloudWatch 指标等于零,或大于 FreeableMemory 指标的 SwapUsage 指标,表示节点承受着内存压力。

由于 RedisMemcached 都在内存缓存中,所以交换会降低应用程序的速度。

如果您发现节点由于内存压力而进行交换,请纵向扩展到更大的缓存节点类型。否则,请为 Redis 设置预留内存参数,或为 Memcached 设置连接开销参数。

Linux 将不常访问的内存交换到磁盘

当 ElastiCache 节点没有内存压力时,也可能会使用交换,因为 Linux 操作系统会主动移动不常用于交换的内存页以提高内存效率。这种用法是正常的内核行为,并不意味着要对交换进行主动读取和写入。

最佳做法是查看 SwapUsage 指标,以验证使用的交换空间量不超过 300 MB。


相关信息

我应该监控哪些指标? (Redis)

我应该监控哪些指标? (Memcached)

AWS 官方
AWS 官方已更新 2 年前