Amazon ElastiCache インスタンスで増加しているスワップアクティビティを解決したいと考えています。
簡単な説明
ElastiCache は Linux 上で動作します。バージョンやアクティビティパターンなどのオペレーティングシステム (OS) の要因によって、スワップの動作が制御されます。スワップ使用量の変動は想定される現象です。システムがディスクと RAM 間でページを移動するときに、使用可能な RAM が不足すると、スワップの問題が発生します。
Linux OS がメモリページをスワップするために再配置する理由は次のとおりです。
- ElastiCache ノードにメモリの負荷がかかっている。
- Linux がアクセス頻度の低いメモリをディスクにスワップしている。
解決策
ElastiCache ノードにメモリの負荷がかかっている
使用可能なインスタンスメモリよりも多くのメモリをキャッシュノードが使用する場合、Linux はメモリからディスクにデータをスワップして空き容量を増やします。ノードに負荷がかかっているかどうかを判断するには、FreeableMemory と SwapUsage の Amazon CloudWatch メトリクスを確認します。
FreeableMemory メトリクスの値がゼロの場合は、ノードにメモリ負荷がかかっています。SwapUsage メトリクスの場合、FreeableMemory の値より大きいと、ノードにメモリ負荷がかかっています。
Redis と Memcached はメモリキャッシュにあるため、スワップアクティビティによってアプリケーションの速度が低下します。メモリ負荷のためにノードがスワップされている場合は、より大きなキャッシュノードタイプにスケールアップしてください。Redis の予約メモリ のパラメータや Memcached の接続オーバーヘッド のパラメータを設定することもできます。
Linux がアクセス頻度の低いメモリをディスクにスワップしている
Linux は、ElastiCache ノードにメモリ負荷がかかっていない場合にスワップを使用する場合があります。メモリ効率を高めるため、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)