ElastiCache Redisインスタンスのスワッピングで継続的な問題が発生しています。Amazonには、スワップ使用率の急上昇に気付き、ElastiCacheインスタンスを単純に再起動する粗雑な内部監視機能が備わっているようです(これにより、キャッシュされたすべてのアイテムが失われます)。過去14日間のElastiCacheインスタンスのBytesUsedForCache(青い線)とSwapUsage(オレンジ色の線)のグラフは次のとおりです。
ElastiCacheインスタンスのリブートをトリガーするように見えるスワップ使用量の増加パターンを見ることができます。キャッシュされたすべてのアイテムが失われます(BytesUsedForCacheが0に低下します)。
ElastiCacheダッシュボードの[キャッシュイベント]タブには、対応するエントリがあります。
ソースID | タイプ| 日付| イベント
cache-instance-id | キャッシュクラスター| 2015年9月22日火曜日07:34:47 GMT-400 2015 | キャッシュノード0001が再起動しました
cache-instance-id | キャッシュクラスター| 2015年9月22日火曜日07:34:42 GMT-400 2015 | ノード0001でのキャッシュエンジンの再起動エラー
cache-instance-id | キャッシュクラスター| 日9月20日11:13:05 GMT-400 2015 | キャッシュノード0001が再起動しました
cache-instance-id | キャッシュクラスター| 木9月17 22:59:50 GMT-400 2015 | キャッシュノード0001が再起動しました
cache-instance-id | キャッシュクラスター| 2015年9月16日10:36:52 GMT-400 2015 | キャッシュノード0001が再起動しました
cache-instance-id | キャッシュクラスター| 2015年9月15日火曜日05:02:35 GMT-400 2015 | キャッシュノード0001が再起動しました
(以前のエントリを抜粋)
SwapUsage-通常の使用では、MemcachedもRedisもスワップを実行するべきではありません
関連する(デフォルトではない)設定:
- インスタンスタイプ:
cache.r3.2xlarge
maxmemory-policy
:allkeys-lru(以前は大きな違いなくデフォルトのvolatile-lruを使用していました)maxmemory-samples
:10reserved-memory
:2500000000- インスタンスのINFOコマンドを確認する
mem_fragmentation_ratio
と、1.00〜1.05の間に表示されます
AWSサポートに連絡しましたが、あまり有益なアドバイスは得られませんでした。予約メモリをさらに高くすることを提案しました(デフォルトは0で、2.5 GBが予約されています)。このキャッシュインスタンスにはレプリケーションまたはスナップショットが設定されていないため、BGSAVEが発生してメモリ使用量が増えることはないと考えています。
maxmemory
cache.r3.2xlargeのキャップは、62495129600バイトであり、そして我々はキャップを打つ(マイナス私たちがreserved-memory
)すぐに、それがない限り、こんなに早くホストオペレーティングシステムがここにそんなにスワップを使用してプレッシャーを感じるだろうと私には奇妙に思えるし、 Amazonは、何らかの理由でOSのスワップ可能性の設定を上げました。ElastiCache / Redisでこれほど多くのスワップを使用する理由や、回避策を試してみてください。