Amazon ElastiCache インスタンスでスワップアクティビティが増加していますか? これを解決するにはどうすればよいですか?
簡単な説明
ElastiCache は Linux オペレーティングシステム (OS) 上で動作します。スワップの動作は OS によって制御され、OS のバージョンやアクティビティパターンなどの要因の影響を受けます。インスタンスでスワップ使用量が変動するのは予想される動作です。
スワッピングの問題は、システムがディスクと RAM の間でページを移動しているときに、使用可能なランダムアクセスメモリ (RAM) が十分でない場合に発生します。
Linux OS は、主に次の 2 つの理由から、メモリページをスワップにプロアクティブに再配置します
- ElastiCache ノードにメモリ負荷がかかっている
- Linux はアクセス頻度の低いメモリをディスクにスワップする
解決方法
ElastiCache ノードにメモリ負荷がかかっている
キャッシュノードがインスタンスで使用可能なメモリよりも多くのメモリを使用している場合、Linux はメモリからディスクにデータをスワップして、メモリ領域を解放して使用できるようにします。FreeableMemory CloudWatch メトリクスがゼロであるか、 SwapUsage メトリクスが FreeableMemory メトリクスよりも大きい場合は、ノードがメモリ不足状態にあることを示します。
Redis と Memcached はどちらもメモリキャッシュにあるため、スワップするとアプリケーションの速度が低下します。
メモリ不足のためにノードがスワップしていることがわかる場合は、より大きなキャッシュノードタイプにスケールアップします。それ以外の場合は、Redis の Reserved Memory パラメータ、または Memcached の接続オーバーヘッドパラメータを設定します。
Linux はアクセス頻度の低いメモリをディスクにスワップする
スワップは、ElastiCache ノードにメモリ負荷がかかっていないときに使用されることがあります。Linux OS は、スワップに頻繁に使用されないメモリページをプロアクティブに移動してメモリ効率を高めるためです。この使用法は通常のカーネルの動作であり、スワップへのアクティブな読み取りと書き込みを意味するものではありません。
SwapUsage メトリクスを確認して、使用されているスワップの量が 300 MB を超えていないことを確認するのがベストプラクティスです。
関連情報
どのメトリクスを監視すべきですか? (Redis)
どのメトリクスを監視すべきですか? (Memcached)