予約メモリの管理 - Amazon ElastiCache (Redis OSS)

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

予約メモリの管理

予約メモリは、nondata 用に確保されるメモリです。バックアップまたはフェイルオーバーを実行すると、Redis OSS は使用可能なメモリを使用して、クラスターのデータが .rdb ファイルに書き込まれている間、クラスターへの書き込みオペレーションを記録します。すべての書き込みに十分なメモリが使用可能できない場合、プロセスは失敗します。以下に、 ElastiCache (Redis OSS) の予約メモリを管理するためのオプションと、それらのオプションを適用する方法について説明します。

予約メモリはどれくらい必要ですか。

2.8.22 より前のバージョンの Redis OSS を実行している場合は、Redis OSS 2.8.22 以降を実行している場合よりも多くのメモリをバックアップとフェイルオーバー用に予約します。この要件は、 ElastiCache (Redis OSS) がバックアッププロセスを実装するさまざまな方法によるものです。経験則は、2.8.22 より前のバージョンでは Redis OSS オーバーヘッドのノードタイプのmaxmemory値の半分を、Redis OSS バージョン 2.8.22 以降では 4 分の 1 を予約することです。

がバックアップとレプリケーションプロセス ElastiCache を実装する方法が異なるため、経験則は reserved-memory-percentパラメータを使用してノードタイプのmaxmemory値の 25% を予約することです。これはデフォルト値であり、ほとんどの場合に推奨されます。

バースト可能なマイクロインスタンスタイプとスモールインスタンスタイプがmaxmemory制限近くで動作している場合、スワップの使用が発生する可能性があります。バックアップ、レプリケーション、高トラフィック時にこれらのインスタンスタイプの運用上の信頼性を向上させるには、 reserved-memory-percentパラメータの値を小さなインスタンスタイプでは最大 30%、マイクロインスタンスタイプでは最大 50% に増やすことをお勧めします。

データ階層化を使用する ElastiCache クラスターの書き込みが多いワークロードでは、ノードの使用可能なメモリの 50% reserved-memory-percentまで を増やすことをお勧めします。

詳細については、次を参照してください。

予約メモリを管理するパラメータ

2017 年 3 月 16 日現在、Amazon ElastiCache (Redis OSS) には、Redis OSS メモリを管理するための 2 つの相互に排他的なパラメータ reserved-memoryと が用意されていますreserved-memory-percent。これらのパラメータはいずれも Redis OSS ディストリビューションの一部ではありません。

ElastiCache 顧客になった時期に応じて、これらのパラメータの 1 つまたはもう 1 つがデフォルトのメモリ管理パラメータです。このパラメータは、新しい Redis OSS クラスターまたはレプリケーショングループを作成し、デフォルトのパラメータグループを使用する場合に適用されます。

  • 2017 年 3 月 16 日より前に開始したお客様の場合 – デフォルトのパラメータグループを使用して Redis OSS クラスターまたはレプリケーショングループを作成する場合、メモリ管理パラメータは ですreserved-memory。この場合、0 バイトのメモリが予約されます。

  • 2017 年 3 月 16 日以降に開始したお客様の場合 — デフォルトのパラメータグループを使用して Redis OSS クラスターまたはレプリケーショングループを作成する場合、メモリ管理パラメータは ですreserved-memory-percent。この場合、ノードの maxmemory 値の 25% がデータ以外の目的で予約されます。

2 つの Redis OSS メモリ管理パラメータについて読んだら、デフォルトではないパラメータまたはデフォルト以外のパラメータを使用することをお勧めします。その場合は、他の予約メモリ管理パラメータに変更できます。

そのパラメータの値を変更するには、カスタムパラメータグループを作成し、希望のメモリ管理パラメータと値を使用するように変更します。その後、新しい Redis OSS クラスターまたはレプリケーショングループを作成するたびに、カスタムパラメータグループを使用できます。既存のクラスターまたはレプリケーショングループの場合は、カスタムパラメータグループを使用するように変更できます。

詳細については、次を参照してください。

予約メモリのパラメータ

2017 年 3 月 16 日以前は、すべての ElastiCache (Redis OSS) 予約メモリ管理は パラメータを使用して行われていましたreserved-memoryreserved-memory のデフォルト値は 0 です。このデフォルトは、Redis OSS オーバーヘッド用のメモリを一切予約せず、Redis OSS がノードのすべてのメモリをデータで消費できるようにします。

バックアップ用およびフェイルオーバー用に使用できる十分なメモリを持てるように reserved-memory を変更するには、カスタムパラメータグループを作成する必要があります。このカスタムパラメータグループでは、クラスターおよびクラスターのノードタイプで実行されている Redis OSS バージョンに適した値reserved-memoryに を設定します。詳細については、「予約メモリはどれくらい必要ですか。」を参照してください。

パラメータreserved-memoryは ElastiCache (Redis OSS) に固有であり、一般的な Redis OSS ディストリビューションの一部ではありません。

次の手順は、 reserved-memoryを使用して Redis OSS クラスターのメモリを管理する方法を示しています。

予約メモリを使用してメモリを予約するには
  1. 実行中のエンジンバージョンに一致するパラメータグループファミリーを指定するカスタムパラメータグループを作成します。たとえば、redis2.8 パラメータグループファミリーを指定します。詳細については、「パラメータグループを作成する」を参照してください。

    aws elasticache create-cache-parameter-group \ --cache-parameter-group-name redis6x-m3xl \ --description "Redis OSS 2.8.x for m3.xlarge node type" \ --cache-parameter-group-family redis6.x
  2. Redis OSS オーバーヘッド用に予約するメモリのバイト数を計算します。ノードタイプに対する maxmemory 値を Redis OSS ノードタイプ固有のパラメータ で確認できます。

  3. パラメータ reserved-memory が前の手順で計算したバイト数であるように、カスタムパラメータグループを変更します。次の AWS CLI 例では、2.8.22 より前のバージョンの Redis OSS を実行し、ノードの の半分を予約する必要があることを前提としていますmaxmemory。詳細については、「パラメータグループを変更する」を参照してください。

    aws elasticache modify-cache-parameter-group \ --cache-parameter-group-name redis28-m3xl \ --parameter-name-values "ParameterName=reserved-memory, ParameterValue=7130316800"

    各ノードタイプには異なる maxmemory 値があるため、使用する各ノードタイプに対して個別のカスタムパラメータグループが必要です。したがって、各ノードタイプには reserved-memory に対して異なる値が必要です。

  4. カスタムパラメータグループを使用するように Redis OSS クラスターまたはレプリケーショングループを変更します。

    次の CLI の例では、カスタムパラメータグループ redis28-m3xl をすぐに使用するようにクラスター my-redis-cluster を変更しています。詳細については、「 ElastiCache クラスターの変更」を参照してください。

    aws elasticache modify-cache-cluster \ --cache-cluster-id my-redis-cluster \ --cache-parameter-group-name redis28-m3xl \ --apply-immediately

    次の CLI の例では、カスタムパラメータグループ redis28-m3xl をすぐに使用するようにレプリケーショングループ my-redis-repl-grp を変更しています。詳細については、「レプリケーショングループの変更」。

    aws elasticache modify-replication-group \ --replication-group-id my-redis-repl-grp \ --cache-parameter-group-name redis28-m3xl \ --apply-immediately

reserved-memory-percent パラメータ

2017 年 3 月 16 日、Amazon は パラメータ ElastiCache を導入reserved-memory-percentし、 ElastiCache (Redis OSS) のすべてのバージョンで利用可能にしました。reserved-memory-percent の目的は、すべてのクラスターに対して予約メモリ管理を簡易化することです。ノードタイプにかかわらずクラスターの予約メモリを管理するために、各パラメータグループファミリー (redis2.8 など) に対して単一のパラメータグループを持てるようにすることによって実行します。reserved-memory-percent のデフォルト値は 25 (25 パーセント) です。

パラメータreserved-memory-percentは ElastiCache (Redis OSS) に固有であり、一般的な Redis OSS ディストリビューションの一部ではありません。

r6gd ファミリーのノードを使用しているクラスターでメモリ使用量が 75% に達すると、データ階層化が自動的にトリガーされます。詳細については、「データ階層化」を参照してください。

を使用してメモリを予約するには reserved-memory-percent

reserved-memory-percent を使用して ElastiCache (Redis OSS) クラスターのメモリを管理するには、次のいずれかを実行します。

  • Redis OSS 2.8.22 以降を実行している場合は、デフォルトのパラメータグループをクラスターに割り当てます。デフォルトの 25 パーセントで十分です。そうでない場合、次のステップを実行して、値を変更します。

  • 2.8.22 より前のバージョンの Redis OSS を実行している場合は、おそらく のデフォルト reserved-memory-percent25% よりも多くのメモリを予約する必要があります。そのためには、次の手順を使用します。

のパーセント値を変更するには reserved-memory-percent
  1. 実行中のエンジンバージョンに一致するパラメータグループファミリーを指定するカスタムパラメータグループを作成します。たとえば、redis2.8 パラメータグループファミリーを指定します。カスタムパラメータグループは、デフォルトのパラメータグループを変更できないため必要です。詳細については、「パラメータグループを作成する」を参照してください。

    aws elasticache create-cache-parameter-group \ --cache-parameter-group-name redis28-50 \ --description "Redis OSS 2.8.x 50% reserved" \ --cache-parameter-group-family redis2.8

    reserved-memory-percent は、ノードの maxmemory に対する割合としてメモリを予約するため、各ノードタイプに対応するカスタムパラメータグループは必要ありません。

  2. reserved-memory-percent が 50 (50 パーセント) であるようにカスタムパラメータグループを変更します。詳細については、「パラメータグループを変更する」を参照してください。

    aws elasticache modify-cache-parameter-group \ --cache-parameter-group-name redis28-50 \ --parameter-name-values "ParameterName=reserved-memory-percent, ParameterValue=50"
  3. このカスタムパラメータグループは、2.8.22 より前のバージョンの Redis OSS を実行するすべての Redis OSS クラスターまたはレプリケーショングループに使用します。

    次の CLI の例では、カスタムパラメータグループをredis28-50すぐに使用my-redis-clusterするように Redis OSS クラスターを変更します。詳細については、「 ElastiCache クラスターの変更」を参照してください。

    aws elasticache modify-cache-cluster \ --cache-cluster-id my-redis-cluster \ --cache-parameter-group-name redis28-50 \ --apply-immediately

    次の CLI の例では、Redis OSS レプリケーショングループを変更my-redis-repl-grpして、カスタムパラメータグループをすぐにredis28-50使用できるようにします。詳細については、「レプリケーショングループの変更」を参照してください。

    aws elasticache modify-replication-group \ --replication-group-id my-redis-repl-grp \ --cache-parameter-group-name redis28-50 \ --apply-immediately

予約メモリ管理パラメータの指定

2017 年 3 月 16 日に現在の ElastiCache お客様であった場合、デフォルトのリザーブドメモリ管理パラメータreserved-memoryは 0 (0) バイトの予約メモリです。2017 年 3 月 16 日以降に ElastiCache 顧客になった場合、デフォルトのリザーブreserved-memory-percentドメモリ管理パラメータはノードのメモリの 25% が予約されています。これは、 ElastiCache (Redis OSS) クラスターまたはレプリケーショングループをいつ作成したかに関係なく当てはまります。ただし、リザーブドメモリ管理パラメータは、 AWS CLI または ElastiCache API を使用して変更できます。

パラメータ reserved-memory および reserved-memory-percent は相互に排他的です。パラメータグループには、常にどちらかがありますが、両方があることはありません。パラメータグループを変更することによって、パラメータグループが予約メモリ管理のためにどちらのパラメータを使用するかを変更できます。デフォルトのパラメータグループは変更できないため、パラメータグループはカスタムパラメータグループである必要があります。詳細については、「パラメータグループを作成する」を参照してください。

を指定するには reserved-memory-percent

予約メモリ管理パラメータとして reserved-memory-percent を使用するには、modify-cache-parameter-group コマンドを使用してカスタムパラメータグループを変更します。parameter-name-values パラメータを使用して、reserved-memory-percent とそれの値を指定します。

次の CLI の例では、reserved-memory-percent を使用して予約メモリを管理するように、カスタムパラメータグループ redis32-cluster-on を変更します。パラメータグループが予約メモリ管理に ParameterName パラメータを使用するには、ParameterValue に値を割り当てる必要があります。詳細については、「パラメータグループを変更する」を参照してください。

aws elasticache modify-cache-parameter-group \ --cache-parameter-group-name redis32-cluster-on \ --parameter-name-values "ParameterName=reserved-memory-percent, ParameterValue=25"
reserved-memory を指定するには

予約メモリ管理パラメータとして reserved-memory を使用するには、modify-cache-parameter-group コマンドを使用してカスタムパラメータグループを変更します。parameter-name-values パラメータを使用して、reserved-memory とそれの値を指定します。

次の CLI の例では、reserved-memory を使用して予約メモリを管理するように、カスタムパラメータグループ redis32-m3xl を変更します。パラメータグループが予約メモリ管理に ParameterName パラメータを使用するには、ParameterValue に値を割り当てる必要があります。エンジンバージョンは 2.8.22 より新しいため、値を cache.m3.xlargemaxmemory の 25% である 3565158400 に設定します。詳細については、「パラメータグループを変更する」を参照してください。

aws elasticache modify-cache-parameter-group \ --cache-parameter-group-name redis32-m3xl \ --parameter-name-values "ParameterName=reserved-memory, ParameterValue=3565158400"