Memorystore for Valkey に関するよくある質問

このページでは、Memorystore for Valkey の使用に関する次のよくある質問(FAQ)とその回答について説明します。

どの程度のメモリと CPU を使用することをおすすめしますか?

メモリ使用率が 80% を超えないようにすることをおすすめします。また、平均 CPU 使用率を 60% で実行することをおすすめします。その結果、合計容量の約 3 分の 1 である単一の可用性ゾーンの損失を許容できます。このシナリオでは、残りのノードの平均 CPU 使用率は約 90% です。

CPU とメモリの使用量をモニタリングするにはどうすればよいですか?

プライマリ Memorystore for Valkey ノードとそのリードレプリカの CPU 使用率をモニタリングするには、/instance/cpu/maximum_utilization 指標を使用します。この指標は、インスタンス内のすべてのノードの最大 CPU 使用率を 0.0(0%)から 1.0(100%)の範囲で測定します。詳細については、CPU 使用率のベスト プラクティスをご覧ください。

プライマリ Memorystore for Valkey ノードとその読み取りレプリカが使用するメモリをモニタリングするには、/instance/node/memory/utilization 指標を使用します。この指標は、インスタンス内の単一ノードのメモリ使用率を 0.0(0%)から 1.0(100%)の範囲で測定します。

CPU とメモリの使用量をモニタリングするアラートを設定するにはどうすればよいですか?

CPU とメモリの使用量に対するモニタリング アラートを設定するには、Cloud Monitoring を使用します。たとえば、/instance/memory/maximum_utilization 指標が設定したしきい値を超えた場合に通知するアラートを設定できます。詳細については、メモリ使用量に対する Monitoring アラートを設定するをご覧ください。

クライアント アプリケーションからの接続をいくつ開いたままにしておくことをおすすめしますか?

クライアントのベンチマークを使用して、最適な設定を判断することをおすすめします。各クライアントからの推奨開始点は、Valkey ノードごとに 1 つの接続です。詳細については、Valkey での接続の過負荷を避けるをご覧ください。

クライアントでパイプラインを有効にして、クライアントがより多くのリクエストをより迅速に処理できるようにすることをおすすめします。

インスタンスのクライアント接続数をモニタリングするにはどうすればよいですか?

使用するクライアント接続の数をモニタリングするには、/instance/node/clients/connected_clients 指標を使用します。この指標は、インスタンスの各ノードに接続されているクライアントの数を測定します。

クライアント接続が多すぎる場合はどうすればよいですか?

/instance/clients/maximum_connected_clients 指標を使用して確認できるクライアント接続の最大数は、maxclients パラメータに関連付けられている値よりも小さくする必要があります。値が等しい場合は、次の操作を行います。

  • client kill コマンドを使用して、リークした接続や不要な接続を停止します。
  • インスタンスのノードタイプを確認します。ノードタイプのクライアントの最大数が、Memorystore for Valkey がノードタイプでサポートする最大値と等しい場合は、クライアントの接続プールサイズを変更するか、より大きなノードタイプを使用します。詳細については、Valkey での接続の過負荷を避けるをご覧ください。

ビジネスのトラフィックが急増するイベントが予定されているとします。どうしますか?

ビジネスニーズに合わせて Memorystore for Valkey を構成できます。このシナリオでは、次の方法でインスタンスの容量を増やすことができます。

  • インスタンスにシャードを追加できます。これにより、インスタンスの CPU 使用率が増加し、大量のデータやトラフィックを処理できるようになります。インスタンスの容量は、インスタンス内のシャードの数によって決まります。シャードを追加することで、アプリケーションはパフォーマンスの低下なしに需要の増加に対応できます。
  • ノードタイプをより大きなノードタイプに変更できます。これにより、インスタンスのメモリが増加します。インスタンスの容量は、インスタンスのノードタイプによって決まります。たとえば、ノードタイプを standard-small ノードタイプから highmem-medium ノードタイプに変更できます。

イベントの数日前にインスタンスの容量を増やすことをおすすめします。また、インスタンスの容量をスケーリングし、インスタンスのスケーリングの速度と信頼性を向上させるには、トラフィックが少ない期間にスケーリングします。インスタンスのトラフィックをモニタリングする方法については、インスタンスをモニタリングするをご覧ください。

データを保護する方法

データを保護するため、Memorystore for Valkey には次のメカニズムが用意されています。

  • Identity and Access Management(IAM)認証: IAM を使用して、ユーザーとサービス アカウントのログイン アクセスを管理します。IAM ベースの認証は Valkey AUTH と統合されており、静的パスワードに依存せずに認証情報(IAM トークン)をシームレスにローテーションできます。
  • 転送中の暗号化: Transport Layer Security(TLS)プロトコルを使用してすべての Valkey トラフィックを暗号化します。転送中の暗号化が有効になっている場合、Valkey クライアントは接続を介して安全に通信します。TLS 用に構成されていない Valkey クライアントはブロックされます。

クライアント コードのベスト プラクティスは何ですか?

Memorystore for Valkey でクライアント コードを最適に使用するには、次のベスト プラクティスを使用することをおすすめします。

  • アプリケーションを Memorystore for Valkey のクラスタモードが有効なインスタンスに接続するには、valkey-goiovalkeyvalkey-pyValkey GLIDE などの推奨クライアントを使用します。

    別のクライアントを使用する場合は、インスタンス内のハッシュスロットと対応するノードのマップを維持するクラスタ対応の Valkey クライアントを使用してください。これにより、リクエストを正しいノードに送信できます。これにより、リダイレクトによるパフォーマンス オーバーヘッドを防ぐことができます。詳細については、Valkey クライアントのベスト プラクティスをご覧ください。

  • 接続タイムアウト間隔を 5 秒、リクエスト タイムアウト間隔を 10 秒に設定することをおすすめします。タイムアウトを短い間隔に設定すると、Memorystore for Valkey で再接続ストームが発生し、サービスが危険にさらされる可能性があります。

  • クライアントが失敗したリクエストを定期的に再試行し、リクエスト間の遅延を増加させる場合は、ネットワーク アプリケーションの標準的なエラー処理方法として指数バックオフを使用します。

  • クライアント ライブラリのコードサンプルを使用します。たとえば、valkey-go クライアントのデフォルト値は、すべての推奨事項を満たしているため、このクライアントに対して何も構成する必要はありません。

データ復元性にはどのようなオプションがありますか?

Memorystore for Valkey には、データ復元力のための次の機能が用意されています。

  • 高可用性: Memorystore for Valkey は、レプリカノードに冗長容量を提供します。障害が発生した場合、Memorystore for Valkey はこの容量を使用してダウンタイムなしで動作できます。

  • 永続性: 環境が予期せずクラッシュした場合、Memorystore for Valkey は環境を自動的に復元します。これは永続性と呼ばれます。

    Memorystore for Valkey では、次のタイプの永続性が提供されます。

    • Redis データベース(RDB)の永続性: 耐久性の高いストレージにデータのスナップショットを保存して、データを保護します。これらのスナップショットの頻度は、スナップショットの間隔を選択して指定します。ノード障害が発生した場合、フェイルオーバーができない場合でもデータを復元できます。

    • Append-Only File(AOF)永続性: データの耐久性を優先する場合は、このタイプの永続性を使用します。AOF 永続化では、すべての書き込みコマンドを AOF ファイルと呼ばれるログファイルに記録することで、データを耐久的に保存します。システム障害または再起動が発生すると、サーバーは AOF ファイル コマンドを順番に再生してデータを復元します。

  • バックアップ: Memorystore for Valkey インスタンスを手動で特定の時点に復元します。また、バックアップを使用してデータをエクスポートして分析することもできます。

    バックアップは、次のようなシナリオで役立ちます。

    • 障害復旧: 障害復旧計画の一部としてバックアップを使用します。障害が発生した場合は、データを新しい Memorystore for Valkey インスタンスに復元できます。
    • データ移行: 異なる Memorystore for Valkey インスタンス間でデータを移行します。データを統合したり、別のリージョンに移動したりできます。Memorystore for Valkey インスタンスからバックアップを復元することもできます。
    • データを共有する: 異なるチームやアプリケーション間でデータを共有します。これにより、コラボレーション、オフライン データ分析、データ交換が可能になります。
    • コンプライアンス: コンプライアンスを目的に、キャッシュデータの定期的なバックアップを作成します。
    • バックアップをスケジュール設定する: オンデマンド バックアップの作成に加えて、インスタンスのバックアップ スケジュールを構成できます。その結果、Memorystore for Valkey はインスタンスの定期的なバックアップを開始します。
  • クロスリージョン レプリケーション: プライマリ インスタンスからセカンダリ インスタンスを作成し、異なるリージョンでインスタンスを読み取りに使用できるようにします。セカンダリ インスタンスは、リージョンが停止した場合の障害復旧シナリオの冗長性も提供します。

    Memorystore for Valkey のリージョン間レプリケーションには、次のメリットがあります。

    • 障害復旧: プライマリ インスタンスのリージョンが利用できなくなった場合は、別のリージョンのセカンダリ インスタンスに切り離すか、切り替えて、読み取りリクエストと書き込みリクエストを処理できます。セカンダリ インスタンスは、切り替えコマンドや切り離しコマンドを発行せずに読み取りリクエストを処理します。
    • 地理的に分散したデータ: データを地理的に分散すると、データがユーザーに近づき、読み取りレイテンシが短縮されます。
    • 読み取りトラフィックの地理的ロード バランシング: 1 つのリージョンで接続が遅い場合や過負荷になった場合は、トラフィックを別のリージョンに転送できます。

インスタンスのパフォーマンスを最大限に高めるにはどうすればよいですか?

Memorystore for Valkey インスタンスのパフォーマンスを最適化するには、次の操作を行います。

  • メモリ管理CPU 使用率のベスト プラクティスに従ってください。これらのプラクティスは、インスタンスの最適なパフォーマンスを実現します。
  • 監査ログを使用して、インスタンスへのアクセスをモニタリングします。これにより、インスタンスの管理者アクティビティ(Admin Activity 監査ログ)またはインスタンス データにアクセスするユーザー(Data Access 監査ログ)に関連する問題があるかどうかを判断できます。
  • リードレプリカを使用します。Memorystore for Valkey では、レプリケーションは非同期です。そのため、プライマリ ノードのデータはレプリカにすぐに表示されません。少し古いデータを処理できる場合は、リードレプリカを使用します。これにより、読み取りスループットとレイテンシが大幅に改善されます。
  • リソースを大量に消費する Valkey コマンドは使用しないでください。これらのコマンドを使用すると、次のパフォーマンスの問題が発生する可能性があります。

    • レイテンシが高く、クライアントがタイムアウトする
    • メモリ使用量を増やすコマンドによるメモリ負荷
    • Valkey のメインスレッドがブロックされているため、ノードのレプリケーションと同期中にデータ損失が発生する
    • ヘルスチェック、オブザーバビリティ、レプリケーションの不足

    これらのコマンドを使用する代わりに、リソース効率の高いコマンドを使用します。たとえば、キースペース全体をスキャンする場合は、KEYS コマンドを使用しないでください。代わりに、SCAN を使用してください。

    リソースを大量に消費する Valkey コマンドと、リソース効率の高い代替コマンドの詳細については、リソースを大量に消費する Valkey コマンドをご覧ください。

  • ビジネスニーズでデータの有効期限を設定できる場合は、設定することをおすすめします。有効期限を設定すると、メモリ使用量が削減されます。

  • Memorystore for Valkey インスタンスのバージョンを最新バージョンにアップグレードします。新しいソフトウェア バージョンでは、信頼性とパフォーマンスが向上しています。

  • maxmemory-policy パラメータの値を変更します。このパラメータは、インスタンス データが maxmemory の上限に達したときに Valkey が行う動作を指定します。

    インスタンスのメモリがいっぱいになり、新しい書き込みが発生すると、Valkey はキーを削除し、インスタンスの maxmemory ポリシーに基づいて書き込み用にスペースを確保します。
    maxmemory-policy パラメータの値が noeviction に設定されている場合、インスタンスが最大メモリに達すると、Memorystore for Valkey はエラーを返します。ただし、Memorystore for Valkey はデータを上書きまたは削除しません。インスタンスの可用性を高めるには、Memorystore for Valkey がキーを削除できるように maxmemory-policy パラメータの値を変更します。

    maxmemory-policy パラメータに設定できるさまざまな値の詳細については、Maxmemory ポリシーをご覧ください。このパラメータの更新の詳細については、構成パラメータを更新するをご覧ください。

  • 目的のキャッシュ ヒット率になるように、Memorystore for Valkey インスタンスを調整します。これにより、適切な割合のヒットを処理できるように、データベースのサイズを適切に設定できます。

    インスタンスをチューニングするには、次の操作を行います。

    1. total_keyspace_hits_count モニタリング指標と total_keyspace_misses_count モニタリング指標を使用して、インスタンスのキーのルックアップに成功した合計数と、インスタンスのキーのルックアップに失敗した合計数をそれぞれ確認します。
    2. ヒットの合計数をヒットとミスの合計数で割ります(ヒット /(ヒット + ミス))。
      商がヒット率です。
    3. インスタンスをチューニングして適切なヒット率を得るには、インスタンスをスケーリングします。シャード数をスケールインまたはスケールアウトしたり、ノードタイプをスケールアップまたはスケールダウンしたりできます。詳細については、インスタンス容量のスケーリングについてをご覧ください。

    ヒット率を上げると、システムのレイテンシとスループットが向上します。パフォーマンス、スケーリング、費用の目標に合ったバランスを見つけます。

  • デフォルトでは、インスタンスに対してパフォーマンス ベンチマークを実行して、接続の飽和なしに接続数を増やすことでパフォーマンスが向上するかどうかを判断することをおすすめします。おすすめの出発点は、各 Valkey ノードへの接続を 1 つ開くようにクライアントを構成することです。

  • クライアントのパイプライン処理を有効にして、クライアントがより多くのリクエストをより迅速に処理できるようにします。パイプラインを構成するには、クライアント ライブラリを使用します。詳細については、このライブラリに関連付けられているドキュメントをご覧ください。

インスタンスの高可用性を最適化するにはどうすればよいですか?

信頼性が高いため、単一ゾーン インスタンスではなく、高可用性のマルチゾーン インスタンスを作成することをおすすめします。

高可用性インスタンスを作成する場合は、/instance/node/replication/offset 指標を使用することをおすすめします。この指標を使用すると、インスタンス内の単一ノードのレプリケーション オフセット(バイト単位)をモニタリングできます。レプリケーション オフセットは、Memorystore for Valkey がプライマリ ノードとリードレプリカ間でレプリケートしていないバイト数です。