Valkey または Redis OSSスナップショットを作成するのに十分なメモリがあることを確認する - Amazon ElastiCache

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Valkey または Redis OSSスナップショットを作成するのに十分なメモリがあることを確認する

Valkey 7.2 以降、および Redis OSSバージョン 2.8.22 以降のスナップショットと同期

Valkey には、スナップショットと同期のデフォルトサポートがあります。Redis 2.8.22 OSS では、同期と保存中にスワップ使用量を増やすことなく、アプリケーションの使用により多くのメモリを割り当てることができるフォークレス保存プロセスが導入されました。詳細については、「同期とバックアップの実装方法」を参照してください。

バージョン 2.8.22 より前の Redis OSSスナップショットと同期

ElastiCache (Redis OSS) を使用する場合、Redis は次のような場合にバックグラウンド書き込みコマンドをOSS呼び出します。

  • バックアップのためのスナップショットを作成するとき。

  • レプリカとレプリケーショングループ内のプライマリを同期させるとき。

  • Redis で追加専用ファイル機能 (AOF) を有効にする場合OSS。

  • レプリカをプライマリに昇格するとき (プライマリ/レプリカの同期が実行される)。

Redis がバックグラウンド書き込みプロセスOSSを実行するときは、プロセスのオーバーヘッドに対応するために十分なメモリが必要です。十分なメモリを利用できない場合、このプロセスは失敗します。そのため、Redis OSSクラスターを作成するときは、十分なメモリを持つノードインスタンスタイプを選択することが重要です。

Valkey と Redis でのバックグラウンド書き込みプロセスとメモリ使用量 OSS

バックグラウンド書き込みプロセスが呼び出されるたびに、Valkey と Redis はそのプロセスをOSSフォークします (これらのエンジンはシングルスレッドであることに注意してください)。1 つのフォークは、データを Redis .rdb OSS スナップショットファイルのディスクに保持します。もう 1 つのフォークは、すべての読み取りと書き込みのオペレーションを処理します。スナップショットが point-in-timeスナップショットであることを確認するために、すべてのデータ更新と追加は、データ領域とは別の使用可能なメモリ領域に書き込まれます。

データをディスクに保持しながら、すべての書き込みオペレーションを記録するのに十分なメモリが使用できる限り、メモリ不足の問題は発生しません。次のいずれかに該当する場合は、メモリ不足の問題が発生する可能性があります。

  • アプリケーションで頻繁に書き込みオペレーションが実行され、新しいデータや更新されたデータを受け入れるために使用可能なメモリが大量に必要になる。

  • 新しいデータや更新されたデータを書き込むために使用できるメモリが少なすぎる。

  • ディスクに永続化するのに長時間かかる大規模なデータセットがあり、大量の書き込みオペレーションが必要になる。

次の図は、バックグラウンド書き込みプロセス実行時のメモリの使用を示しています。

イメージ: バックグラウンド書き込み中のメモリ使用の図。

バックアップを実行する際のパフォーマンスへの影響については、「独自設計型クラスターのバックアップがパフォーマンスに与える影響」を参照してください。

Valkey と Redis がスナップショットOSSを実行する方法の詳細については、http://valkey.io を参照してください。

リージョンとアベイラビリティーゾーンの詳細については、「のリージョンとアベイラビリティーゾーンの選択 ElastiCache」を参照してください。

バックグラウンド書き込み実行中のメモリ不足の回避

BGSAVE や などのバックグラウンド書き込みプロセスBGREWRITEAOFが呼び出されるたびに、プロセスが失敗しないようにするには、プロセス中に書き込みオペレーションで消費されるメモリよりも多くのメモリを使用できる必要があります。最悪の場合のシナリオは、バックグラウンド書き込みオペレーション中にすべてのレコードが更新され、いくつかの新しいレコードがキャッシュに追加されることです。このため、2.8.22 より前の Redis OSSバージョンでは 50 (50%)、Valkey およびすべての Redis OSSバージョン 2.8.22 以降では 25 (25%) reserved-memory-percentに設定することをお勧めします。

maxmemory 値は、データとオペレーションのオーバーヘッドで使用できるメモリを示します。デフォルトのパラメータグループの reserved-memory パラメータを変更することはできないため、クラスター用のカスタムパラメータグループを作成する必要があります。のデフォルト値reserved-memoryは 0 です。これにより、Redis はデータを含むすべての maxmemory OSSを消費できるため、バックグラウンド書き込みプロセスなど、他の用途ではメモリが少なすぎる可能性があります。ノードインスタンスタイプごとの maxmemory 値については、「Redis OSSノードタイプ固有のパラメータ」を参照してください。

reserved-memory パラメータを使用して、ボックスで使用されるメモリ量を減らすこともできます。

の Valkey および Redis 固有のパラメータの詳細については ElastiCache、「」を参照してくださいValkey パラメータと Redis OSSパラメータ

パラメータグループの作成と変更については、「 ElastiCache パラメータグループの作成」と「 ElastiCache パラメータグループの変更」を参照してください。