使用AWS re:Post即您表示您同意 AWS re:Post 使用条款

如何解决我的 ElastiCache 实例中交换活动增加的问题?

1 分钟阅读
0

我想解决我的 Amazon ElastiCache 实例中交换活动增加的问题。

简短描述

ElastiCache 在 Linux 运行。版本和活动模式等操作系统(OS)因素控制着交换行为。交换使用量的波动是预期行为。如果系统在磁盘和 RAM 之间移动页面时没有足够的可用内存,则会出现交换问题。

以下原因导致 Linux 操作系统重新放置内存页以进行交换:

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

解决方法

ElastiCache 节点承受着内存压力

如果您的缓存节点使用的内存多于可用实例内存,则 Linux 会将数据从内存交换到磁盘以释放空间。要确定节点是否面临压力,请查看 FreeableMemorySwapUsage Amazon CloudWatch 指标。

FreeableMemory 指标中的值为零表示节点承受着内存压力。对于 SwapUsage 指标,若值大于 FreeableMemory 值,则表示节点承受着内存压力。

由于 Redis 和 Memcached 位于内存缓存中,因此交换活动会减慢应用程序的速度。如果节点由于内存压力而产生交换,则纵向扩展到更大的缓存节点类型。您还可以为 Redis 设置预留内存参数或为 Memcached 设置连接开销参数。

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

当 ElastiCache 节点没有内存压力时,Linux 也可能会使用交换。为了提高内存效率,Linux 会将不经常使用的内存页交换到磁盘。这是正常的内核行为,并不意味着要主动读取和写入以进行交换。最佳做法是查看 SwapUsage 指标以确认使用的交换量不超过 300 MB。

相关信息

Host-level metrics

Which metrics should I monitor?(Amazon ElastiCache for Redis)

Which metrics should I monitor?(Amazon ElastiCache for Memcached)

AWS 官方
AWS 官方已更新 7 个月前