我想解决我的 Amazon ElastiCache 实例中交换活动增加的问题。
简短描述
ElastiCache 在 Linux 运行。版本和活动模式等操作系统(OS)因素控制着交换行为。交换使用量的波动是预期行为。如果系统在磁盘和 RAM 之间移动页面时没有足够的可用内存,则会出现交换问题。
以下原因导致 Linux 操作系统重新放置内存页以进行交换:
- ElastiCache 节点承受着内存压力。
- Linux 将不经常访问的内存交换到磁盘。
解决方法
ElastiCache 节点承受着内存压力
如果您的缓存节点使用的内存多于可用实例内存,则 Linux 会将数据从内存交换到磁盘以释放空间。要确定节点是否面临压力,请查看 FreeableMemory 和 SwapUsage 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)