このページでは、さまざまなエラーのシナリオと、それらのエラーを解決するためのガイダンスについて説明します。
レプリケーションのシナリオ
このセクションでは、インスタンスで発生する可能性のあるレプリケーションの問題について説明します。
レプリケーションの遅延をモニタリングするにはどうすればよいですか?
Memorystore for Valkey には /instance/replication/maximum_offset_diff
指標があります。この指標は、プライマリ インスタンスのノードの最大レプリケーション オフセット差分(バイト単位)をモニタリングします。
レプリケーション オフセットの差を小さくすることで、レプリカは増分同期オペレーションをフル同期オペレーションよりも頻繁に、かつ低コストで実行できます。
maximum_offset_diff
指標のしきい値を設定することをおすすめします。しきい値を超えると、Memorystore for Valkey はアラートで通知します。
インスタンスのノードタイプに基づいて、次のようにしきい値を設定することをおすすめします。
- ノードタイプが
shared-core-nano
、standard-small
、highmem-medium
の場合は、しきい値を 64 MB 未満に設定します。 - ノードタイプが
highmem-xlarge
の場合は、しきい値を 1 GB 未満に設定します。
プライマリ インスタンスとそのレプリカ間にレプリケーション ラグがある場合はどうすればよいですか?
プライマリ インスタンスの書き込みオペレーションが多すぎて、レプリカがこれらのオペレーションを複製できない場合、レプリケーションの遅延が大きくなる可能性があります。この問題を解決するには、インスタンスのシャード数を増やして、インスタンスの容量をスケーリングすることをおすすめします。
メモリ管理のシナリオ
このセクションでは、インスタンスで発生する可能性があるメモリ管理の問題について説明します。
インスタンスがメモリ不足であることを判断するために使用できる指標はどれですか?
Memorystore for Valkey インスタンスのメモリ使用量をモニタリングするには、/instance/memory/maximum_utilization
指標を表示することをおすすめします。インスタンスのメモリ使用量が 80% に近づき、データ使用量の増加が見込まれる場合は、インスタンスのサイズをスケールアップして、パフォーマンスを向上させ、新しいデータを格納するスペースを確保します。
モニタリングのシナリオ
このセクションでは、インスタンスで発生する可能性があるモニタリングの問題について説明します。
Memorystore for Valkey のアラートを設定するにはどうすればよいですか?
Cloud Monitoring を使用して、インスタンスに設定したしきい値を超える指標がある場合に通知するアラートを設定できます。Cloud 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
ポリシーを使用している場合は、フォルダ番号 961333125034
(Memorystore for Valkey 専用のフォルダ)を許可リストに登録します。例:
name: organizations/Consumer-org-1/policies/compute.restrictPrivateServiceConnectProducer spec: rules: - values: allowedValues: - under:folders/961333125034
組織のポリシーで .disablePrivateServiceConnectCreationForConsumers
ポリシーを使用している場合は、SERVICE_PRODUCERS
を許可リストに登録する必要があります。次に例を示します。
name: organizations/Consumer-org-1/policies/compute.disablePrivateServiceConnectCreationForConsumers spec: rules: - values: allowedValues: - SERVICE_PRODUCERS
クラスタモードが無効になっているインスタンスのエラー処理
アプリケーションがリードレプリカのないインスタンスの読み取りエンドポイントに接続すると、接続が閉じられ、
ERR no replicas found
エラー メッセージが表示されます。この場合は、アプリケーションをプライマリ エンドポイントに接続するか、インスタンスにリードレプリカを追加します。フェイルオーバーが発生すると、アプリケーションからの既存の接続が閉じ、
ERR role change occurred
エラー メッセージが表示されます。アプリケーションがインスタンスの読み取りエンドポイントに接続し、インスタンスのすべてのリードレプリカが失敗した場合にも、このエラー メッセージが表示されます。この場合、アプリケーションは指数バックオフで接続を再試行する必要があります。