このページでは、さまざまなエラーのシナリオと、それらのエラーを解決するためのガイダンスについて説明します。
レプリケーションのシナリオ
このセクションでは、インスタンスで発生する可能性のあるレプリケーションの問題について説明します。
レプリケーションの遅延をモニタリングするにはどうすればよいですか?
Memorystore for Valkey には /instance/replication/maximum_offset_diff 指標があります。この指標は、プライマリ インスタンス内のノードの最大レプリケーション オフセット差分(バイト単位)をモニタリングします。
レプリケーション オフセットの差分を小さくすることで、レプリカは完全同期オペレーションよりも頻繁に、かつ低コストで増分同期オペレーションを実行できます。
maximum_offset_diff 指標のしきい値を設定することをおすすめします。しきい値を超えると、Memorystore for Valkey はアラートで通知できます。
インスタンスのノードタイプ に基づいて、次のようにしきい値を設定することをおすすめします。
ノードタイプが
shared-core-nano、custom-pico、custom-micro、custom-mini、standard-small、highmem-medium、highcpu-medium、standard-largeのいずれかの場合は、しきい値を 64 MB 未満に設定します。ノードタイプが
highmem-xlargeまたはhighmem-2xlargeの場合は、しきい値を 1 GB 未満に設定します。
プライマリ インスタンスとそのレプリカ間でレプリケーションの遅延が発生した場合はどうすればよいですか?
プライマリ インスタンスの書き込みオペレーションが多すぎると、レプリカがこれらのオペレーションをレプリケートできず、レプリケーションの遅延が大きくなる可能性があります。この問題を解決するには、 インスタンスのシャード数を増やしてインスタンスの容量をスケーリングすることをおすすめします。
CPU 使用率のシナリオ
このセクションでは、インスタンスで発生する可能性のある CPU 使用率の問題について説明します。
インスタンスの出力バッファの容量が不足した場合はどうすればよいですか?
Memorystore for Valkey インスタンスの出力バッファの容量が不足した場合は、次の操作を行います。
maxmemoryパラメータに小さい値を設定します。allkeys-lrumaxmemoryポリシーを使用します。
インスタンスのメモリがいっぱいになり、新しい書き込みが発生すると、Memorystore for Valkey はインスタンスの maxmemory ポリシーに基づいてキーを削除し、書き込み用にスペースを確保します。allkeys-lru ポリシーは、キーセット全体から、最も長い間使用されていない(LRU)キーを削除します。
インスタンスの maxmemory と使用済みメモリをモニタリングすることをおすすめします。これにより、インスタンスがプロビジョニングされたインスタンス容量に達したかどうかを確認できます。
また、maxmemory パラメータの値を小さくすると、オーバーヘッド用のスペースが増えます。
インスタンスの外部指標が表示されないのはなぜですか?
インスタンスの CPU 使用率が高い場合や、インスタンスのリソースが不足している場合(接続が多すぎるなど)、インスタンスが誤動作し、外部指標が表示されないことがあります。
インスタンスのレイテンシの原因を特定するにはどうすればよいですか?
発生しているレイテンシがインスタンス、クライアント アプリケーション、ネットワーク環境のいずれに起因するかを判断するには、valkey-cli ツールを使用して継続的なレイテンシ テストを実行します。
インスタンスのレイテンシの原因を特定するには、次の操作を行います。
インスタンスと同じリージョンと VPC ネットワークにある Compute Engine VM に接続します。
valkey-cliツールがまだインストールされていない場合は、VM にインストールします。Debian または Ubuntu ベースの VM の場合は、次のコマンドを実行します。
sudo apt-get install valkey-toolsRHEL または CentOS ベースの VM の場合は、次のコマンドを実行します。
sudo yum install valkey-tools
インスタンスのレイテンシをミリ秒単位で測定するには、次のコマンドを実行します。
redis-cli --latency -h ENDPOINT_ADDRESS -p PORT
インスタンスで転送中の暗号化を使用している場合は、
--tlsフラグを追加して認証局(CA)を指定して接続します。次のように置き換えます。
- ENDPOINT_ADDRESS: インスタンスのエンドポイントの IP アドレス。
- PORT:インスタンスの エンドポイント用に予約されているポート番号。通常、このポート番号は 6379 です。
コマンドを数分間実行します。このツールは、サーバーに継続的に ping を送信し、レイテンシの最小値、最大値、平均値を計算します。
コマンドを停止して結果を表示するには、
Ctrl+Cを押します。
コマンドの出力で平均レイテンシが常に低い場合(通常は 1 ミリ秒以下)、インスタンスは正常で、迅速に応答しています。
コマンドでレイテンシが常に低いのに、クライアント アプリケーションで遅延が発生する場合は、次の問題がレイテンシの原因となっている可能性があります。
- ネットワーク: クライアントとインスタンス間で異なるリージョンまたはゾーンを介してトラフィックがルーティングされると、ネットワークの遅延が大きくなる可能性があります。
- クライアント: クライアントの CPU またはメモリ使用率が高い、接続 プールの枯渇、アプリケーション ロジックのボトルネックにより、クライアントで発生する合計ラウンドトリップ時間 が増加する可能性があります。
メモリ管理のシナリオ
このセクションでは、インスタンスで発生する可能性のあるメモリ管理の問題について説明します。
インスタンスがメモリ不足になっていることを判断するには、どの指標を使用すればよいですか?
Memorystore for Valkey インスタンスのメモリ使用量
をモニタリングするには、
/instance/memory/maximum_utilization 指標を表示することをおすすめします。インスタンスのメモリ使用量
が 80% に近づき、データ使用量が増加すると予想される場合は、
インスタンスのサイズをスケールアップして
パフォーマンスを向上させ、新しいデータを格納するためのスペースを確保します。
モニタリングのシナリオ
このセクションでは、インスタンスで発生する可能性のあるモニタリングの問題について説明します。
Memorystore for Valkey のアラートを設定するにはどうすればよいですか?
Cloud Monitoring を使用して、インスタンスに設定したしきい値を超える 指標がある場合に通知するアラートを設定できます。Cloud Monitoring でアラートを設定する方法については、メモリ使用量に対する Monitoring アラートを設定するをご覧ください。
接続管理のシナリオ
このセクションでは、インスタンスで発生する可能性のある接続管理の問題について説明します。
接続数の上限に達した場合や、接続タイムアウトが発生した場合はどうすればよいですか?
接続数の上限に達すると、クライアントはサーバーに接続できなくなります。これは接続拒否と呼ばれます。
この場合は、次の操作を行います。
/instance/node/stats/rejected_connections_count指標を使用して、インスタンス ノードがクライアント数の上限に達したために Memorystore for Valkey が拒否した接続の数を特定します。/instance/node/clients/connected_clients指標を使用して、インスタンス ノードに接続されているクライアントの数 を特定します。これにより、インスタンス内のすべてのノードが上限を下回っているかどうかを確認できます。client killコマンドを使用して、リークした接続や不要な接続を停止します。- クライアント アプリケーションの接続数またはプールサイズを減らします。詳細については、クライアント アプリケーションに関連するドキュメントをご覧ください。
- クライアント数の上限を調整します。詳細については、インスタンスを構成するをご覧ください。
- インスタンスの接続数の上限を増やすために、インスタンスをより大きなノードタイプにスケールアップします。
タイムアウトのシナリオ
このセクションでは、インスタンスで発生する可能性のあるタイムアウトの問題について説明します。
I/O タイムアウトが発生した場合はどうすればよいですか?
Memorystore for Valkey での読み取りまたは書き込みオペレーションが指定時間内に完了しなかった場合、I/O タイムアウトが発生します。このタイムアウトは、さまざまな理由で発生する可能性があります。たとえば、インスタンスの 1 つ以上のノードが過負荷になっている可能性があります。
I/O タイムアウトが発生した場合は、次の操作を行います。
instance/cpu/maximum_utilization指標を使用して、インスタンス内のノードの CPU 使用率を 0.0(0%)から 1.0(100%)の間で特定します。すべてのノードの CPU 使用率が 80% 未満になるようにすることをおすすめします。詳細については、CPU 使用率のベスト プラクティスをご覧ください。- サーバーがタイムアウトしたためにクライアントがサーバーから切断された場合は、 指数バックオフ とジッターを使用して再試行します。これにより、複数のクライアントが同時にサーバーに過負荷をかけることを回避できます。
接続性エラーのシナリオ
このセクションでは、インスタンスで発生する可能性のある接続の問題について説明します。
ファイアウォール ルールによる接続エラー
ファイアウォール ルールでは、Memorystore for Valkey で使用されるポートをブロックすることによる接続エラーが発生することがあります。インスタンスの両方の Private Service Connect エンドポイントですべてのポートを許可リストに登録する必要があります。エンドポイントの詳細については、予約済みのネットワーク アドレスをご覧ください。
組織のポリシーによる接続エラー
Memorystore for Valkey インスタンスへの Private Service Connect 接続をブロックする組織のポリシー を設定できます。
組織のポリシーで .restrictPrivateServiceConnectProducer ポリシーを使用している場合は、フォルダ番号 672235397475(Memorystore for Valkey 専用のフォルダ)を許可リストに登録します。次に例を示します。
name: organizations/Consumer-org-1/policies/compute.restrictPrivateServiceConnectProducer
spec:
rules:
- values:
allowedValues:
- under:folders/672235397475
組織のポリシーで .disablePrivateServiceConnectCreationForConsumers ポリシーを使用している場合は、SERVICE_PRODUCERS を許可リストに登録します。次に例を示します。
name: organizations/Consumer-org-1/policies/compute.disablePrivateServiceConnectCreationForConsumers
spec:
rules:
- values:
allowedValues:
- SERVICE_PRODUCERS
応答しない接続による接続エラー
Memorystore for Valkey への応答しない接続を検出するようにクライアント アプリケーションを構成することを強くおすすめします。応答しない接続が検出されたら、クライアントは接続をリセットする必要があります。復元力のあるアプリケーションを構築するには、次のクライアント構成をおすすめします。
- TCP keep-alive パラメータを構成する: 接続が
アイドル状態の場合でも、クライアントが応答しない接続をプロアクティブに
検出して切断するように、
TCP keepalive time、TCP keepalive interval、およびTCP keepalive probesパラメータを設定します。たとえば、TCP keepalive timeパラメータを 30 秒、TCP keepalive intervalを 10 秒、TCP keepalive probesを 3 に設定すると、クライアントは 1 分以内に応答しないアイドル接続をリセットします。 - TCP ユーザー タイムアウトを構成する: このタイムアウトをクライアントに設定して、 未処理のリクエストがあり、応答を停止した接続をリセットします。たとえば、タイムアウトを 15 秒に設定すると、クライアントは 15 秒後に未処理のリクエストがある応答しない接続をリセットします。
クラスタモードが無効になっているインスタンスのエラー処理
リードレプリカがないインスタンスの読み取りエンドポイントにアプリケーションが接続すると、接続が閉じられ、
ERR no replicas foundエラー メッセージが表示されます。この場合は、アプリケーションをプライマリ エンドポイントに接続するか、インスタンスにリードレプリカを追加します。フェイルオーバーが発生すると、アプリケーションからの既存の接続が閉じられ、
ERR role change occurredエラー メッセージが表示されます。アプリケーションがインスタンスの読み取りエンドポイントに接続し、インスタンスのすべてのリードレプリカが失敗した場合にも、このエラー メッセージが表示されます。この場合、アプリケーションは 接続を指数バックオフを使用して再試行する必要があります。
永続性のシナリオ
このセクションでは、インスタンスで発生する可能性のある永続性の問題について説明します。
書き込みトラフィックが、AOF の書き換えによるスペースの圧縮と再利用を行う Memorystore for Valkey の能力を超えている
この状況が発生すると、Append-Only File(AOF)が書き換えプロセスで管理できるよりも速く増加します。これにより、ディスクが枯渇し、書き込みが失敗し、レプリカの作成と完全同期を必要とするオペレーションがブロックされます。
Memorystore for Valkey は、書き込みスループットを調整するためのガードレールを実装しました。 これにより、AOF の書き換えが持続的な高書き込みワークロードに対応できるようになります。