このページは、Memorystore for Redis の最適な使用に関するガイダンスです。このページでは、回避すべき潜在的な問題についても説明します。
トラブルシューティングのシナリオの一覧については、トラブルシューティングをご覧ください。
RDB のエクスポート
RDB バックアップをエクスポートする場合は、次のガイダンスを使用します。
- 書き込みレートが低い期間にエクスポートする。
- 書き込みレートが高い期間にエクスポートすると、インスタンス容量の
maxmemory
構成を一時的に 50% まで下げ、正常なオペレーションに十分なオーバーヘッドを提供します。
リソースを大量に消費するオペレーション
標準階層の Redis インスタンスの場合、次のオペレーションではオペレーション中に追加のメモリが使用されます。
バージョン アップグレード、スケーリング、手動フェイルオーバーは、レプリケーションのために追加のメモリが使用されます(標準階層の場合)。これらのオペレーションは、標準階層インスタンスのアップグレード動作で説明しているレプリケーション プロセスに従います。
インポート / エクスポートのオペレーションでは、これらのオペレーションに関連付けられた Redis の分岐プロセスやコピーオンライトでのデータ管理のために、追加メモリが必要です。
リソース集約型のオペレーションのデメリットを軽減するには、次を行う必要があります。
- オペレーション中に、maxmemory 構成をインスタンスの容量の 80% に引き下げます。これにより、正常なオペレーションに十分なオーバーヘッドが操作が提供されます。
- システムメモリ使用率の指標をモニタリングして、これらのオペレーションのいずれかを実行する前に、この指標が 80% を下回ることを確認してください。
- インスタンスのトラフィックが少ない期間(夜間や週末など)に、これらのオペレーションを実行します。
- これらのオペレーションを実行する前に、指数バックオフで再試行ロジックを実行しておく必要があります。
接続の再試行が必要なオペレーションとシナリオ
次の操作とシナリオでは、ネットワークと Redis インスタンスの間のネットワーク接続が切断されます。
- バージョン アップグレード
- スケールアップとスケールダウン
- インポートしています
- 手動フェイルオーバー
- システム メンテナンス
- 転送中の暗号化が有効になっている Redis インスタンスの認証局のローテーション
- 緊急フェイルオーバー
これらのオペレーションにより、一時的な接続ブレークを必要とするインスタンスが変更されます。アプリケーションが自動的に再接続され、引き続き正常に機能するように、これらのオペレーションを実行する前に指数バックオフで再試行ロジックを設定しておく必要があります。
定期的なメンテナンス
Memorystore for Redis インスタンスでは、定期的にメンテナンスが実施されます。詳細については、Memorystore for Redis のメンテナンス ポリシーをご覧ください。
定期的なメンテナンスに備えるために、次のベスト プラクティスを実施してください。
- メンテナンスの更新が可能になるメンテナンスの時間枠を設定します。
- インスタンスのトラフィックが少なく、メモリ オーバーヘッドが十分な時間にメンテナンスの時間枠をスケジュールします。詳細については、メンテナンス アップデートの影響をご覧ください。
- メンテナンスの時間枠の通知を有効にして、今後のメンテナンスを知らせる。
- 指数バックオフによる再試行ロジックを実行する。
- スタンダード ティア インスタンスの場合は、手動フェイルオーバーを使用してメンテナンス イベントをシミュレートし、メンテナンスによるフェイルオーバーがアプリケーションに与える影響を確認できます。
- ベーシック ティア インスタンスの場合、一時的にインスタンスのサイズを大きなサイズにスケーリングすることで、メンテナンス更新の影響をシミュレートできます。影響を観察した後、元のサイズにスケールバックできます。
メモリ管理
オープンソース Redis では、よく知られるメモリの断片化が発生するため、メモリ管理が難しくなる場合があります。メモリ負荷が高い場合は、インスタンスの maxmemory
構成を下げて、オーバーヘッドを設定することをおすすめします。
Memorystore インスタンスのメモリ プレッシャーをモニタリングする最善の方法は、システムメモリ使用率の指標を使用することです。Memorystore for Redis のメモリを管理する方法について詳しくは、メモリ管理のベスト プラクティスをご覧ください。
アイドル状態の接続の管理
接続が適切に終了されていない場合、時間の経過とともに Memorystore インスタンスへの接続数が増加することがあります。これは特に、容量階層に基づいて最大接続数の制限を課す転送中の暗号化を使用している場合に、パフォーマンスに悪影響を与える可能性があります。この問題を軽減するには、timeout
Redis 構成パラメータを使用することをおすすめします。このパラメータを使用すると、アイドル状態のクライアント接続が自動的に終了するまでの秒数を設定できます。
アクセスの透明性のリソース名
機密データは、Memorystore for Redis のリソース名に保存しないでください。リソース名とは、Memorystore for Redis インスタンス名と、タグなどのインスタンス メタデータを指します。リソース名に保存されたデータは、Google Cloud のアクセスの透明性によって保護される保証はありません。また、組織のアクセスの透明性に関するコンプライアンス要件と競合する可能性があります。
一部のサーバーレス環境に必要なサーバーレス VPC アクセス コネクタ
一部のサーバーレス環境では、Memorystore for Redis に接続するためにサーバーレス VPC アクセス コネクタが必要です。これらの環境のいずれかを使用して接続する場合は、プロジェクト用のサーバーレス VPC アクセス コネクタを設定します。
ネットワーキング
プライベート サービス アクセスの接続モードを使用することをおすすめします。Memorystore for Redis では、プライベート サービス アクセスとダイレクト ピアリングの 2 つの接続モードを使用します。プライベート サービス アクセス接続モードでは、IP 範囲の管理がシンプルになり、必要に応じて共有 VPC を使用できます。
インスタンスを作成した後に、接続モードを変更することはできません。
詳しくは、ネットワーキングをご覧ください。
モニタリングとアラート
Redis インスタンスのメモリ使用量に関する主要な指標を得るために、モニタリングとアラートの使用をおすすめします。また、受信するキャッシュ リクエストに対して Redis インスタンスがどの程度効率的に応答しているかもわかります。
次のデフォルトのアラートを設定する必要があります。
CPU 使用率のベスト プラクティス
高コストな redis コマンドの不適切な使用は、高レイテンシ、低い応答性、接続の問題につながります。スタンダード ティアのインスタンスは、障害復旧中に高可用性を提供し、プライマリ ノードとレプリカノード間の非同期レプリケーションに依存します。いずれかのノードで、Redis メインスレッドをブロックする高負荷なコマンド処理が行われている場合、レプリケーションに影響する可能性があります。問題が解決せず、ロケーションが停止した場合は、停止したロケーションに書き込まれた最新のデータが他のロケーションで使用できない場合があります。
Cloud Monitoring を使用して、メインスレッド CPU 秒(redis.googleapis.com/stats/cpu_utilization_main_thread
)指標にアラートを設定し、CPU 使用率がプライマリ ノードで 0.9 秒、各レプリカノードで 0.5 秒を超えないようにすることをおすすめします。
Redis インスタンスが推奨値を超えている場合は、インスタンスを上位の容量ティアにスケーリングするか、CPU 使用率の高いオペレーションを回避するためにトラブルシューティング手順に従うことをおすすめします。